Esc_html、esc_attr、esc_html_e等有什么区别?

时间:2018-12-07 作者:baldrick

我从安全人员那里得到了反馈,他指出我应该在代码中正确转义用户输入。所以我做了一些研究,找到了逃逸函数。

他们之间有什么区别?我应该何时使用esc_html() 以及何时esc_attr()?我应该在什么时候使用这些函数_e() 最后呢?

2 个回复
SO网友:Jacob Peattie

esc_html() 转义字符串,使其不被解析为HTML。字符,如< 已转换为&lt;, 例如这在读者看来是一样的,但这意味着如果输出的值是<script> 然后浏览器不会将其解释为实际的脚本标记。

只要输出的值不应包含HTML,就使用此函数

esc_attr() 转义字符串,以便在HTML属性中安全使用,如class="" 例如这可以防止值脱离HTML属性。例如,如果值为"><script>alert();</script> 您尝试将其输出到HTML属性中,它将关闭当前HTML标记并打开脚本标记。这是不安全的。通过转义该值,它将无法关闭HTML属性和标记并输出不安全的HTML。

在HTML属性内输出值时使用此函数

esc_url() 转义字符串以确保它是有效的URL。

href=""src="" 属性

esc_textarea() 转义值,以便在<textarea> 要素通过使用此函数转义值,可以防止在<textarea< 从关闭<textarea> 元素并输出其自己的HTML。

<textarea> 元素

esc_html()esc_attr() 还有以结尾的版本__(), _e()_x(). 这些用于输出可翻译字符串。

WordPress具有功能,__(), _e()_x(), 用于输出可翻译的文本。__() 返回可翻译字符串,_e() 回显可翻译字符串,以及_x() 返回具有给定上下文的可翻译字符串。你以前可能见过他们。

由于您不一定相信翻译文件包含安全值,因此在输出可翻译字符串时使用这些函数可以确保输出的字符串不会导致上述问题。

输出可翻译字符串时使用这些函数

SO网友:jrmd

esc_html 将在html内部使用,例如<p> 标签

<p><?php echo esc_html( $some_variable ); ?></p>
esc_attr 将用于转义html标记上的属性值,如下所示:

<p my-attribute="<?php echo esc_attr( $some_variable ); ?>"></p>
正在应用_e 最后用于与文本域一起使用,并将自动为您回显,例如:

<p><?php esc_html_e( \'some-text\', \'text-domain\' ); ?></p>

<p my-attribute="<?php esc_attr_e( \'some-text\', \'text-domain\' ); ?>"></p>
除了_e 还有__ 其作用与_e 但不要回显它,以便可以将其存储在变量中。

相关推荐

functions php file

好的,我正在编辑我的函数。Wordpress中的php文件(关于我的子主题),我删除了一行代码(在删除之前我复制了代码)。这导致了白色的死亡屏幕,所以我简单地粘贴回我删除的代码(是的,我将它粘贴回我删除它的位置),但我仍然有白色的死亡屏幕。我已经完成了这些功能。我上周完成的一个备份中的php文件(功能齐全),并通过FTP将其上载到正确的文件夹,但没有任何效果。我已经尝试再次激活父主题,并创建了另一个子主题,以便比较这两个功能。php文件(将全新的、有效的子主题与不再工作的原始子主题进行比较),代码看起来是