【问题标题】:Is HTML Purifier too slow for a commenting system? Is there a better alternative?HTML Purifier 对于评论系统来说太慢了吗?有更好的选择吗?
【发布时间】:2014-06-03 02:49:11
【问题描述】:

我正在编写一个类似于 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>

所以我需要能够输出这些标签而不是对其进行编码,以便 cmets 正确显示。

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

strip_tags() 的假设下运行还不够好,我一直在寻找替代方案,似乎最受推崇的选项之一是 HTML Purifier。但是,我一直在这里阅读问题和答案,提示 HTML Purifier 非常很慢。

由于 cmets 的呈现方式,每个评论都必须单独纯化(我不能将所有评论都作为一个字符串来处理),我想知道使用 HTML Purifier 是否会太慢如果一个线程中有几十个甚至几百个 cmets。

总结:

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

【问题讨论】:

  • 堆栈溢出使用类似 page down.js 的东西

标签: sanitization sanitize htmlpurifier html-sanitizing


【解决方案1】:

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

【讨论】:

  • 谢谢,我不知道为什么我没有想到!
猜你喜欢
  • 2012-06-16
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2011-11-22
  • 2013-12-19
  • 1970-01-01
  • 2017-11-26
相关资源
最近更新 更多