6

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

您将使用其中的哪一个来过滤用户在网站上发布的评论?

4

3 回答 3

7

kses 现在已经 7 年没有更新了——我认为这足以立即将其从图片中删除。

然而,真正的问题是:需要在用户评论中接受 HTML 输入吗?

因为如果您不这样做,那么问题的正确解决方案是htmlspecialchars在您将评论回显为 HTML 之前使用,仅此而已。不需要更多。

即使您需要允许用户格式化他们的评论,也有各种替代标记语言(BBCode、MarkDown、Textile - 这是您键入时 SO 使用的),它们都被广泛使用并且足以完成任务。

考虑一下您甚至可以在不接受 HTML 输入的情况下构建 Wikipedia

于 2011-04-04T11:12:43.573 回答
5

一篇给我建议的好文章是:

HTML 清理:细节中的魔鬼(和漏洞)

我几乎在所有项目中都使用 HTMLPurifier,因为使用缓存不会对性能造成很大影响。

于 2011-04-04T11:03:50.770 回答
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);
于 2015-10-23T22:42:44.297 回答