0

我正在开发一个允许人们使用编辑器输入 html 格式内容的网站。

但是,我担心 XSS 注入。编辑器显然使用 Javascripts 在客户端过滤信息,但我几乎不能相信这一点,因为不信任来自客户端的任何内容是一种很好的做法。

我希望能够将某些标签列入白名单,例如:

<br> <img src=""> <p> <b>

但仍然对 XSS 攻击的输入执行安全过滤。

我考虑使用http://php.net/manual/en/function.strip-tags.php但我注意到 img 标签是 XSS 黑客的最爱之一。

是否有可能制作一个可以做到这一点的功能?会安全吗?

4

2 回答 2

3

使用HTMLPurifier

$config = HTMLPurifier_Config::createDefault();

// the tags and attributes you want to allow
$config->set('HTML.Allowed', 'br,img[src],p,b');

$purifier = new HTMLPurifier($config);

print $purifier->purify($inputHtml);

另一种可能的解决方案是将您的 HTML 加载到DomDocument中,删除不需要的元素或属性并获取更新的 HTML

于 2013-04-24T13:45:16.533 回答
0

我还是更喜欢BB代码。你可以在http://phpclasses.org找到一个不错的 BB 解析器类

于 2013-04-24T13:49:16.380 回答