vanilla/htmlawed

htmLawed 库的 Composer 封装,用于净化和过滤 HTML。已通过 PHPUnit 和 PhantomJS 测试!

安装次数: 503,876

依赖者: 6

建议者: 0

安全: 0

星标: 40

关注者: 17

分支: 15

开放问题: 3

语言:HTML

v2.2.15 2023-09-29 18:41 UTC

README

Build Status Coverage Packagist Version LGPL-3.0

htmLawed 库提供 Composer 封装,用于净化和过滤 HTML。已通过 PHPUnitPhantomJS 测试。

为什么使用 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 联系。