两者的优点/缺点是什么?
您将使用其中的哪一个来过滤用户在网站上发布的评论?
kses 现在已经 7 年没有更新了——我认为这足以立即将其从图片中删除。
然而,真正的问题是:您需要在用户评论中接受 HTML 输入吗?
因为如果您不这样做,那么问题的正确解决方案是htmlspecialchars
在您将评论回显为 HTML 之前使用,仅此而已。不需要更多。
即使您需要允许用户格式化他们的评论,也有各种替代标记语言(BBCode、MarkDown、Textile - 这是您键入时 SO 使用的),它们都被广泛使用并且足以完成任务。
考虑一下您甚至可以在不接受 HTML 输入的情况下构建 Wikipedia。
我最近创建了一个 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);