我应该在HTML Purifier之前使用strip_tags()吗?

时间:2014-06-03 22:21:49

标签: php sanitization sanitize htmlpurifier

我正在我的网站上集成Redactor(一个WYSIWYG编辑器),它输出HTML而不是BBCode或Markdown。我需要允许以下标记,因为它使用它们进行格式化:

<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>

从我在这里阅读并被告知,为了安全地显示内容,我应该将原始数据存储在我的数据库中,以及一个清理版本(由HTML Purifier输出),这将是我实际输出的内容(如果在清理时出现任何问题,则会出现未经过处理的版本。)

我的问题是,我是否应该对数据调用strip_tags()(将上述标记作为允许的标记参数传递),还是应该直接将其传递给HTML Purifier?

1 个答案:

答案 0 :(得分:2)

虽然你可以通过在事实之前过滤掉标签来减少像HTML Purifier这样的解析器所做的解析工作,但首先使用strip_tags()并没有安全性,在你的用例中它很可能不会有太大的不同。

当然,它没有太大区别的原因是你的平均提交内容不会是恶意的,因此通过你的WYSIWYG提交,它只会产生你想要的那些标签允许。因此,您不会在初步strip_tags()运行中删除任何标记以获取这些评论。

与此同时,无论如何,恶意提交可能会绕过strip_tags()给你的任何好处。但是,在解析器之前使用strip_tags()不会造成伤害,可以通过让它占用大量资源来帮助防止尝试使用解析器 - 尽管如果解析器可能导致问题(我希望它有防范措施),这往往是通过嵌套深度而不是通过标记发生的。

简而言之:

我认为没有理由在你的情况下推荐它;但我认为没有理由劝阻你不要使用它。 strip_tags()非常快,如果你在解析器之前使用它,它不会破坏任何东西。