我在一个允许人们使用编辑器输入html格式内容的网站上工作。
然而,我担心XSS注射。编辑器显然使用javascript在客户端过滤信息,但我几乎不能相信它,因为不相信客户端任何东西都是好的做法。
我希望能够将某些标签列入白名单,例如:
<br> <img src=""> <p> <b>
,但仍然对输入执行安全过滤,以防止XSS攻击。
我考虑使用http://php.net/manual/en/function.strip-tags.php,但我注意到img标签是XSS黑客的最爱之一。
是否有可能创建一个函数来执行此操作?它安全吗?
使用html净化器:
$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
我还是更喜欢BB代码。您可以在http://phpclasses.org