vanilla / htmlawed
htmLawed 库的 Composer 封装,用于净化和过滤 HTML。已通过 PHPUnit 和 PhantomJS 测试!
v2.2.15
2023-09-29 18:41 UTC
Requires
- php: >=7.4.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- tburry/pquery: ~1.0.1
This package is auto-updated.
Last update: 2024-08-29 20:34:13 UTC
README
为 htmLawed 库提供 Composer 封装,用于净化和过滤 HTML。已通过 PHPUnit 和 PhantomJS 测试。
为什么使用 htmLawed?
如果你的网站有任何用户生成的内容,那么你需要担心 跨站脚本(XSS)。htmLawed 将会取一个可能有害的 HTML 片段,并移除恶意代码,留下其余的 HTML。
除了基础 htmLawed 库之外,这个包将 htmLawed 转换为 composer 包,并使用对象封装它,以便它可以自动加载。
安装
htmLawed 需要 PHP 5.4 或更高版本
htmLawed 符合 PSR-4 标准,可以使用 composer 安装。只需在 composer.json 中添加 vanilla/htmlawed
。
"require": { "vanilla/htmlawed": "~1.0" }
示例
echo Htmlawed::filter('<h1>Hello world!'); // Outputs: '<h1>Hello world!</h1>'. echo Htmlawed::filter('<i>nothing to see</i><script>alert("xss")</script>') // Outputs: '<i>nothing to see</i>alert("xss")'
配置和规范
htmLawed 过滤器接受两个可选参数: $config
和 $spec
。此库提供了合理的默认值给这些参数,但您可以在 Htmlawed::filter()
中覆盖它们。
$xss = "<i>nothing to see <script>alert('xss')</script>"; // Pass an empty config and spec for no filtering of malicious code. echo Htmlawed::filter($xss, [], []); // Outputs: '<i>nothing to see <script type="text/javascript">alert("xss")</script></i>' // Pass safe=1 to turn on all the safe options. echo Htmlawed::filter($xss, ['safe' => 1]); // Outputs: '<i>nothing to see alert("xss")</i>' // We provide a convenience method that strips all tags that aren't supposed to be in rss feeds. echo Htmlawed::filterRSS('<html><body><h1>Hello world!</h1></body></html>'); // Outputs: '<h1>Hello world!</h1>'
有关完整选项列表,请参阅 htmLawed 文档。
Vanilla 版本 Htmlawed 的差异
我们试图使用尽可能少的更改来使用 htmLawed 的最新版本,以便可以从主项目合并错误修复和安全发布。然而,我们在源代码中做了一些更改。
- 在验证标签(hl_tag)之前平衡标签(hl_bal)。我们发现了一些情况,其中未平衡的脚本标签不会被移除,这解决了该问题。
- 不要在
<blockquote>
标签内部添加额外的<div>
。 - 移除裸露的
<span>
。 - 将缩进从 1 个空格更改为 4 个空格。
如果 htmLawed 的原始作者希望将这些更改上游,请与 support@vanillaforums.com 联系。