HTML Purifier对于评论系统来说太慢了吗?还有更好的选择吗?

时间:2014-06-03 02:49:12

标签: sanitization sanitize htmlpurifier html-sanitizing

我在stackoverflow上编写了类似评论系统,我不确定在输出之前清理用户内容的最佳方法。

真的想要在将内容输出到页面时清理内容,因为如果我在将数据插入数据库之前清理它,我可以想到可能发生的各种问题。

到目前为止,我一直只是通过

运行我的用户内容
htmlentities($content, ENT_QUOTES, 'UTF-8')

根据我的理解,可以安全输出。

但是,我用于评论系统的WYSIWYG编辑器允许使用以下HTML标记进行格式化:

<code><span><div><label><a><br><p><b><i><del><strike><u><img><video><audio><iframe><object><embed><param><blockquote><mark><cite><small><ul><ol><li><hr><dl><dt><dd><sup><sub><big><pre><code><figure><figcaption><strong><em><table><tr><td><th><tbody><thead><tfoot><h1><h2><h3><h4><h5><h6>

所以我需要能够输出这些标签而不是编码它们,以便正确显示评论。

我使用的WYSIWYG编辑器的文档(Redactor)建议通过strip_tags()运行用户内容,将上述标记作为允许的标记参数传递。但是,我在stackoverflow上读到的问题和答案表明这可能还不够。

在假设strip_tags()不够好的情况下运作,我一直在寻找替代方案,而且似乎最受推崇的选项之一是HTML Purifier。但是,我一直在阅读这里的问题和答案,建议HTML Purifier 非常慢。

由于评论的呈现方式,每条评论都必须单独提炼(我不能将它们全部作为一个字符串),我想知道这是否也只是如果一个帖子中有几十个甚至几百条评论,那么使用HTML Purifier会很慢。

要点:

  • 对于这种类型的评论系统,HTML Purifier是否会太慢?
  • 有更好的选择吗?
  • stackoverflow如何处理这个?

1 个答案:

答案 0 :(得分:2)

技巧是存储用户输入的两个副本:干净版本和纯化版本(即高速缓存)。实际上,HTML Purifier文档对此进行了评论,并为您提供了一些如何操作的方法:http://htmlpurifier.org/docs/enduser-slow.html