是否应该通过esc_html()和wp_kses()传递HTML输出?

时间:2011-10-14 作者:Ian Dunn

我对esc_html()wp_kses(). 我明白这一点esc_html() 将特殊字符转换为其HTML实体wp_kses() 删除不需要的标签(例如。,<script>), 但我不确定在什么情况下它们应该一起使用还是分开使用。

如果我通过esc_html(), 然后任何JavaScript都将以纯文本显示,而不是由浏览器呈现,因此在这一点上是安全的,对吗?唯一的理由是也要经历wp_kses() 是为了避免显示原始脚本?

大体上esc_html() 使其安全,并且wp_kses() 让它变得漂亮。对吗?

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

至少是一般规则as espoused by Mark Jaquith, 是sanitize on input, escape on output (这条规则的推论是sanitize early, escape late).

So:使用消毒过滤器(如kses() 在数据库中存储不受信任的数据时,使用转义筛选器(即esc_*() 在模板中输出不受信任的数据时。

SO网友:Otto

当您希望允许html的某些子集出现在结果中时,应该使用kses函数。例如,注释中允许一些HTML用于粗体、斜体、链接等。

应使用esc\\u html函数完全转义html。如果不转换为浏览器将解释为非HTML的内容,任何HTML都无法通过它。

结束

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am