chrisshick / cakephp3-html-purifier
这是一个用于清理在实体中序列化之前的数据的 CakePHP3 Purifier 插件行为。
Requires
- php: >=7.2.0
- cakephp/cakephp: ^4.0
- ezyang/htmlpurifier: *
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-14 09:33:49 UTC
README
此插件是一个使用 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
特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因引起的,无论是源于、因之或与此软件或其使用或其他交易有关。