在php里解决XSS最简单的方法是使用htmlspecialchars转义xml实体,但对于需要使用xml的时候就搏手无策了。之前一直使用一个叫
RemoveXSS的函数,该函数过滤得比较严格,很多html特性都过滤了,而且有bug,不修改代码使用起来很不友好,修改了却无法应对灵活的XSS攻击。
HTML Purifier是基于php 5所编写的HTML过滤器,支持自定义过滤规则,还可以把不标准的HTML转换为标准的HTML,是WYSIWYG编辑器的福音。。
一、使用HTML Purifier的要求
二、基本用法
默认下,使用UTF-8编码,和XHTML 1.0 Transitional文档类型.
<?php
require_once 'library/HTMLPurifier.includes.php';
$dirty_html = <<<EOF
<h1>Hello
<script>alert("world");</script>
EOF;
$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($dirty_html);
输出:
<h1>Hello
</h1>
三、使用配置
配置主要用于设置规则,使用比较简单
$config = HTMLPurifier_Config::createDefault();
// something....
$purifier = new HTMLPurifier($config);
详细的配置规则:
http://htmlpurifier.org/live/configdoc/plain.html
四、属性相关规则
1.id规则
默认下,HTML Purifier是不允许使用id的,可以通过Attr.EnableID选项来控制,当允许使用id的时候,有点需要注意,id只允许全局一个,后面重复的都会被去掉。
$config->set('Attr.EnableID', true); // 允许使用id
$config->set('Attr.IDPrefix', 'test_'); // 给所有id加上前缀test_
$config->set('Attr.IDBlacklist', array( // 设置黑名单,会过滤掉设置的id,如果设置了id前缀,要把前缀也加上
'test_black_list'
));
$config->set('Attr.IDBlacklistRegexp', '/list_\d+/'); // 黑名单,使用正则匹配
输入:
<a id="test_by_willko" href="aa">adf</a>
<a id="black_list" href="aa">adf</a>
<a id="black_list_2" href="aa">adf</a>
输出:
<a id="test_by_willko" href="aa">adf</a>
<a href="aa">adf</a>
<a href="aa">adf</a>
2.class规则
默认下,是允许所有的class。属性Attr.AllowedClasses用于设置允许的class名,没被设置的class将被拒绝使用。而Attr.ForbiddenClasses则用于设置拒绝使用的class名。
$config->set('Attr.AllowedClasses', array( // 设置允许使用的class名
'test_by_willko'
));
$config->set('Attr.ForbiddenClasses', array( // 设置拒绝使用的class名
'ignore'
));
输入:
<p class="test_by_willko">12345</p>
<p class="ignore">78900</p>
输出:
<p class="test_by_willko">12345</p>
<p>78900</p>
四、HTML相关规则
最近,身体不适,待续...
参考资料:
http://htmlpurifier.org/live/INSTALL
http://htmlpurifier.org/docs
分享到:
相关推荐
Laravel开发-laravel-purifier .zip
Laravel开发-laravel-purifier Laravel 5的HTML净化器
Laravel开发-purifier Laravel 5的HTM净化器组件
Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HTMLPurifier 防止 XSS 跨站攻击。 1、安装 HTMLPurifier 是基于 PHP 编写的富文本 HTML 过滤器,通常我们可以使用它来防止 ...
HTML Purifier不仅会使用经过全面审核,安全但允许的白名单删除所有恶意代码(更名为XSS),还将确保您的文档符合标准,这只有在全面了解W3C规范的情况下才能实现。 该插件包括一个特征,一个视图助手,一个行为和...
HTML Purifier是用PHP编写的符合标准HTML过滤器库。 HTML Purifier会使用经过全面审核和安全但允许的白名单删除所有恶意代码(更名为XSS),并确保符合标准。
HTML Purifier HTML Purifier是一种HTML过滤解决方案,它使用了强大的白名单和主动解析的独特组合,以确保不仅可以阻止XSS攻击,而且可以确保生成HTML符合标准。HTML Purifier HTML Purifier是一种使用独特HTML过滤...
Protein Purifier Software是一款用于蛋白质纯化方面的小软件,主要是用来训练的,并不用于真正的纯化过程。主要用来娱乐或者科研训练。
使用 PHP Markdown Lib、SmartyPants 和 HTML Purifier 直接替换 Textpattern 的 classTextile.php。 适用于 Textpattern 4.5.7 及更早版本。 Michel Fortin 的原始 PHP Markdown 代码包含一个与此非常相似的文件...
它是所有基于HTML Purifier的最完整HTML5兼容解决方案。 除了提供最广泛的元素定义集外,它还提供了整洁的规则(用于将输入转换为有效HTML5输出)。 安装 通过运行以下命令与安装: composer require xemlock/...
HTML Purifier是一种HTML筛选解决方案,它使用了强大的白名单和主动解析的独特组合,以确保不仅阻止XSS攻击,而且确保生成HTML符合标准。 HTML Purifier面向需要CSS和完整标签集的不受信任来源的格式丰富的文档。 ...
purifier:Django Purifier管理系统
筛选实时等级过滤器更改警告空气质量传感器空气质量PM2.5密度温度感应器相对湿度传感器先决条件安装安装使用npm安装: npm install -g homebridge-xiaomi-mi-air-purifier 或者,在插件中搜索homebridge-xiaomi-mi-...
从通用源生成XSS有效载荷这是一个简单的脚本,试图从常见源简单地生成XSS有效负载。 该脚本不会基于接收器/源动态生成有效负载,也不会添加自定义混淆。 它仅吸收电流列表,并且在某些情况下,将远程资源(域/ IP)...
净化卡 Lovelace UI的空气净化器卡 默认情况下,家庭助理不提供任何用于控制空气... 使用UI:配置→ Lovelace仪表板→资源→单击加号按钮→将Url设置为/local/purifier-card.js将资源类型设置为JavaScript Module 。
用法require ( 'xhtml-purifier' ) . purify ( html_string ) ;关于实施净化基于8.2节,并实现此处所述算法的子集。 只允许有限的一组允许HTML5元素和属性,而所有其他标签/属性都将简单地放在结果XHTML中。允许的...
空间要求: ...关于版权方面的问题请参照文件“LICENSE.txt”,所有资料仅供学习观摩使用,所引起的一切责任与本人无关。 另外这个留言板缺少个回复功能,要是谁加上了回复功能请发给我一份,谢谢!
Symfony 3.4及更高版本(使用Composer) 在您的composer.json文件中需要该软件包: { " require " : { " exercise/htmlpurifier-bundle " : " * " } } 安装捆绑包: $ composer require exercise/...
python库。 资源全名:data_purifier-0.1.0-py3-none-any.whl