两者的优点/缺点是什么?
您会使用哪一种来过滤用户在网站上发布的评论?
答案 0 :(得分:7)
kses现在7年没有更新了 - 我认为这足以让它立即脱离图片。
但是,真正的问题是:您需要在用户评论中接受HTML输入吗?
因为如果不这样做,问题的正确解决方法是在将评论作为HTML回显之前使用htmlspecialchars
,就是这样。不需要更多。
即使您需要允许用户格式化他们的评论,也有各种替代标记语言(BBCode,MarkDown,Textile - 这是您在键入时使用的SO),它们被广泛使用并且足以完成任务
考虑您甚至可以在不接受HTML输入的情况下构建Wikipedia 。
答案 1 :(得分:5)
一篇建议我的好文章是:
HTML Sanitisation: The Devil’s In The Details (And The Vulnerabilities)
我几乎在所有项目中都使用HTMLPurifier,因为使用缓存时,没有太大的性能影响。
答案 2 :(得分:0)
我最近创建了一个Drupal XSS过滤器的端口。它是Kses的高级版本。 https://github.com/ymakux/xss
$filter = new Filter();
// List of allowed protocols
$allowed_protocols = array('http', 'ftp', 'mailto');
// List of allowed tags you want to keep in text
$allowed_tags = array('a', 'i', 'b', 'em', 'span', 'strong', 'ul', 'ol', 'li', 'table', 'tr', 'td', 'thead', 'th', 'tbody');
$filter->addAllowedProtocols($allowed_protocols);
$filter->addAllowedTags($allowed_tags);
// Parse string
$filtered_string = $filter->xss($string);