HTMLPurifier与Kses

时间:2011-04-03 23:07:56

标签: php html filter htmlpurifier

两者的优点/缺点是什么?

您会使用哪一种来过滤用户在网站上发布的评论?

3 个答案:

答案 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);