chrisshick/cakephp3-html-purifier

这是一个用于清理在实体中序列化之前的数据的 CakePHP3 Purifier 插件行为。

安装次数: 127 078

依赖项: 0

建议者: 0

安全: 0

星标: 12

关注者: 4

分支: 5

开放问题: 2

类型:cakephp-plugin

3.0.0 2020-10-18 03:55 UTC

This package is auto-updated.

Last update: 2024-09-14 09:33:49 UTC


README

Build Status

此插件是一个使用 Html Purifier 库的实体数据清理器: http://htmlpurifier.org/

HTML Purifier 是一个符合标准的 HTML 过滤库,用 PHP 编写。HTML Purifier 不仅会移除所有恶意代码(通常称为 XSS),而且会使用经过彻底审计的、安全的但允许的白名单,同时确保您的文档符合标准,这是只有通过全面了解 W3C 的规范才能实现的。

认可

我要感谢 @josegonzalez,他给了我根据他的 Purifiable Behavior 编写此插件的灵感。

需求

  • CakePHP 3.1.x
  • PHP >= 5.4.16

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

  composer require chrisshick/cakephp3-html-purifier

或者将插件添加到项目的 composer.json 文件中,如下所示

    {
        "require": {
            "chrisshick/cakephp3-html-purifier": "dev-master"
        }
    }

##启用插件在 3.x 中,您只需执行以下操作即可启用插件

    Plugin::load('ChrisShick/CakePHP3HtmlPurifier');

如果您已经使用了 Plugin::loadAll();,则不需要执行上述步骤。

##用法要开始清理您的数据,您需要在初始化函数中将行为附加到您的表,并传递您想要清理的字段

    $this->addBehavior('ChrisShick/CakePHP3HtmlPurifier.HtmlPurifier', [
        'fields'=>['title','description']
    ]);

默认情况下,行为仅在 beforeMarshal 事件上清理。要禁用此功能,您应执行以下操作

   $this->addBehavior('ChrisShick/CakePHP3HtmlPurifier.HtmlPurifier', [
        'events' => [
           Model.beforeMarshal => false,
           // you can also uncomment the line below to turn on the purifier only on the beforeSave event
           //Model.beforeSave => true,
        ]
   ]);

您还可以在自定义事件上调用清理器

    $this->addBehavior('ChrisShick/CakePHP3HtmlPurifier.HtmlPurifier', [
        'events' => [
           Model.myCustomEvent => true,
        ]
   ]);

您可以通过传递配置键到配置中调整 HtmlPurifier 的配置

   $this->addBehavior('ChrisShick/CakePHP3HtmlPurifier.HtmlPurifier', [
        'config' => [
            'HTML' => [
                'DefinitionID' => 'purifiable',
                'DefinitionRev' => 1,
                'TidyLevel' => 'heavy',
                'Doctype' => 'XHTML 1.0 Transitional'
            ],
            'Core' => [
                'Encoding' => 'UTF-8'
            ],
            'AutoFormat' => [
                'RemoveSpansWithoutAttributes' => true,
                'RemoveEmpty' => true
            ],
        ],
   ]);

您可以在 http://htmlpurifier.org/ 网站上找到所有可配置的选项和自定义过滤器。

###HTML5 支持

HTMLPurifier 不支持 HTML 5。但是,此插件根据 HTML 4.01 Transitional 添加了新元素(例如 article、section、video、mark)到 HTML 定义中,因此 HTMLPurifier 不会删除它们。要启用此功能,请在您的配置中将 Doctype 指定为 'HTML 5'。

##许可证

MIT 许可证 (MIT)

版权所有 (c) 2015 Chris Hickingbottom

特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因引起的,无论是源于、因之或与此软件或其使用或其他交易有关。