HTMLPurifier 与 Kses

发布于 2024-10-30 01:11:40 字数 52 浏览 3 评论 0原文

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

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

What are the advantages / disadvantages of both?

Which of them would you use to filter comment that user a posting on a website?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风为裳 2024-11-06 01:11:40

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

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

因为如果不需要,问题的正确解决方案是使用 htmlspecialchars 在将注释回显为 HTML 之前,就是这样。不需要更多。

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

考虑一下,您甚至可以在不接受 HTML 输入的情况下构建维基百科

kses has not been updated in 7 years now -- I think that's enough to take it out of the picture immediately.

However, the real question is: Do you need to accept HTML input in user comments?

Because if you do not, the correct solution to the problem is using htmlspecialchars before you echo the comments as HTML, and that's it. Nothing more is required.

Even if you need to allow users to format their comments, there are various alternative markup languages (BBCode, MarkDown, Textile -- this is what SO uses when you type) which are both widely used and more than adequate for the task.

Consider that you can even build Wikipedia without accepting HTML input.

沩ん囻菔务 2024-11-06 01:11:40

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

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

我在几乎所有项目中都使用 HTMLPurifier,因为有了缓存,性能不会受到太大影响。

A good article that advised me was:

HTML Sanitisation: The Devil’s In The Details (And The Vulnerabilities)

I use HTMLPurifier in almost all my projects because with caching, there is not a big performance hit.

拥醉 2024-11-06 01:11:40

我最近创建了 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);

I recently created a port of Drupal XSS filter. It's advanced version of 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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文