我得到了安全人员的反馈,他指出,我应该在代码中使用用户输入的适当转义。所以我做了一些研究发现了逃逸函数。
他们之间有什么区别?我应该什么时候使用esc_html()
,什么时候使用esc_attr()
?最后,我应该在_e()
中使用这些函数吗?
发布于 2018-12-07 16:28:01
esc_html()
转义字符串,使其不被解析为HTML。例如,像<
这样的字符被转换为<
。这在读者看来是一样的,但这意味着如果要输出的值是</code>,那么浏览器就不会将其解释为实际的脚本标记。</div><div>每当输出的值不应包含HTML时,请使用此函数。</div><div><strong><code>esc_attr()</code></strong>转义字符串,以便在<code>class=""</code>属性中使用是安全的,例如<code>D5</code>。这防止了一个值从HTML属性中分离出来。例如,如果值为<code>"><script>alert();
,并且试图将其输出到HTML属性中,它将关闭当前的HTML标记并打开脚本标记。这不安全。通过转义该值,它将无法关闭HTML属性和标记,并输出不安全的HTML。
在HTML属性中输出值时使用此函数。
esc_url()
转义一个字符串,以确保它是一个有效的URL。
在输出href=""
或src=""
属性内的值时使用此函数。
esc_textarea()
转义一个值,以便在</code>元素中安全使用。通过使用此函数转义值,可以防止<code><textarea<</code>内部输出的值关闭<code><textarea></code>元素并输出自己的HTML。</div><div>在输出<code><textarea></code>元素内的值时使用此函数。</div><div><code>esc_html()</code>和<code>esc_attr()</code>也有以<code>__()</code>、<code>_e()</code>和<code>_x()</code>结尾的版本。这些用于输出可翻译的字符串。</div><div>WordPress具有<code>__()</code>、<code>_e()</code>和<code>_x()</code>等函数,用于输出可翻译的文本。<code>__()</code>返回可转换字符串,<code>_e()</code>回显可翻译字符串,<code>_x()</code>返回具有给定上下文的可转换字符串。你可能以前见过他们。</div><div>由于您不一定相信翻译文件包含安全值,所以在输出可翻译字符串时使用这些函数可以确保输出的字符串不会导致上述相同的问题。</div><div>在输出可翻译字符串时使用这些函数。</div>
发布于 2018-12-07 16:04:13
esc_html
将在html内部使用,例如在
标记之间。
esc_attr
将用于转义html标记上的属性值,如下所示:
将_e
应用到末尾是为了将它与文本域一起使用,并将自动回显它,例如:
除了_e
之外,还有__
,它与_e
相同,但不回显,因此可以将其存储在变量中。
https://wordpress.stackexchange.com/questions/321307
复制相似问题