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


11

我对esc_html()和的不同用法感到困惑wp_kses()。我知道可以esc_html()将特殊字符转换为它们的HTML实体,并且可以wp_kses()删除不需要的标签(例如<script>),但是我不确定应在什么情况下将它们一起或单独使用。

如果我通过运行某些不受信任的HTML esc_html(),那么任何JavaScript都将以纯文本显示,而不是由浏览器呈现,因此在那时是安全的,对吗?还要运行它的唯一原因wp_kses()是避免显示原始脚本?

基本上,esc_html()使其安全且wp_kses()美观。那是对的吗?

Answers:


16

至少在Mark Jaquith的支持下,一般规则是对输入进行消毒,对输出进行逃生(此规则的推论是尽早消毒,而后逃避)。

因此:在数据库中存储不受信任的数据kses()时,请使用清理过滤器(例如,系列),而在模板中输出不受信任的数据时,请使用转义过滤器(即,系列)。esc_*()


14

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

esc_html函数应用于完全转义html。如果不将HTML转换为浏览器将解释为非HTML的内容,则不会通过它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.