4

好的,现在我进退两难了,我需要允许用户插入原始 HTML,但也要阻止所有 JS - 不仅仅是脚本标签,还有来自 href 等。目前,我所知道的是

htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

但这也会将有效标签转换为编码字符。如果我使用striptags,它也不起作用,因为它会删除标签!(我知道你可以允许标签,但问题是如果我允许任何标签,比如<a></a>人们可以向其中添加恶意 JS。

我可以做些什么来允许 html 标签但没有 XSS 注入?我已经计划了一个功能:xss()并用它设置了我的网站模板。它返回转义的字符串。(我只需要逃跑的帮助:))

谢谢!

4

1 回答 1

3

相关:防止 XSS 但仍允许 PHP 中的一些 HTML

HTMLPurifier Docs中的示例代码:

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

您可以将该代码用作xss(...)方法中的参考。

于 2012-10-17T20:06:42.497 回答