我正在开发一个允许人们使用编辑器输入html格式内容的网站。
但是,我担心XSS注射。编辑显然使用Javascripts过滤客户端的信息,但我很难相信,因为这是一个很好的做法,无法从客户端那里得到任何信任。
我希望能够将某些标签列入白名单,例如:
<br> <img src=""> <p> <b>
但仍然针对XSS攻击执行输入的安全过滤。
我考虑使用http://php.net/manual/en/function.strip-tags.php,但我注意到img标签是XSS黑客之一&#39;收藏夹。
是否可以制作一个能够做到这一点的功能?它会安全吗?
答案 0 :(得分: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
答案 1 :(得分:0)
我仍然更喜欢BB代码。你可以在http://phpclasses.org
找到一个不错的BB解析器类