我正在我的网站上集成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?
答案 0 :(得分:2)
虽然你可以通过在事实之前过滤掉标签来减少像HTML Purifier这样的解析器所做的解析工作,但首先使用strip_tags()
并没有安全性,在你的用例中它很可能不会有太大的不同。
strip_tags()
运行中删除任何标记以获取这些评论。
与此同时,无论如何,恶意提交可能会绕过strip_tags()
给你的任何好处。但是,在解析器之前使用strip_tags()
不会造成伤害,可以通过让它占用大量资源来帮助防止尝试使用解析器 - 尽管如果解析器可能导致问题(我希望它有防范措施),这往往是通过嵌套深度而不是通过标记发生的。
简而言之:
我认为没有理由在你的情况下推荐它;但我认为没有理由劝阻你不要使用它。 strip_tags()
非常快,如果你在解析器之前使用它,它不会破坏任何东西。