Escaping Issues

时间:2020-05-20 作者:Faruk rıza

我有一些关于逃跑的问题。这些例子是我做不到的。

Must I escape variables, if it is, how can I do it?

例如:global $redux_demo;

在此代码中:

if ( class_exists( \'Redux\' ) ) {
    global $redux_demo;
if ($redux_demo[\'button-set-single-archive-services\'] == 2)
{
    get_template_part( \'demo-archive-services\' );
    die;

Is it true escaping?

<?php esc_html_e( \'Our Services\', \'hekim\' )?>

Functions start with the, need escaping or not?

例如:<?php the_title(); ?>

如果我用以下函数更改这些函数get, 他们需要逃跑吗?函数启动时的输出有什么不同吗the 和功能启动get?

Why this escaped function doesnt seem?

在逃离这个法尔之后,似乎没有。我逃跑的错误是什么?真正的形式是什么?

<li><?php esc_html( \'<a href="#"> HOME </a>\' ); ?>xx</li>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

转义的目的是确保在输出值时,它不能输出任何恶意的内容,或者只会破坏页面的标记。例如,输出变量时,您需要转义某些字符,以便该值不会无意中打开或关闭HTML标记,这可能会破坏页面布局,甚至输出<script></script> 可能运行恶意JavaScript的元素。

WordPress VIP文档对这一概念有很好的概述,并举例说明:https://wpvip.com/documentation/vip-go/validating-sanitizing-and-escaping/

关于您的具体示例:

Must I escape variables, if it is, how can I do it?

例如:global $redux_demo;

在此代码中:

    if ( class_exists( \'Redux\' ) ) {
        global $redux_demo;
    if ($redux_demo[\'button-set-single-archive-services\'] == 2)
    {
        get_template_part( \'demo-archive-services\' );
        die;```
不需要。并非所有变量都需要转义。变量只需要在输出时转义。$redux_demo 没有被输出,所以这里没有什么需要转义的。

Is it true escaping?

<?php esc_html_e( \'Our Services\', \'hekim\' )?>```
是的。_e() 是一个允许\'Our Services\' 要替换为翻译的字符串。这意味着您不能相信此行的输出总是安全的。因此,它需要逃脱。esc_html_e() 是一个使用自动转义的函数esc_html(), 运行后_e() 允许翻译文本。

Functions start with the, need escaping or not?

例如:<?php the_title(); ?>

如果我用以下函数更改这些函数get, 他们需要逃跑吗?函数启动时的输出有什么不同吗the 和功能启动get?

通常,内置函数以the_ 不需要转义,但函数以get_ do需要转义。例如the_permalink() 使用esc_url() 逃脱get_the_permalink() 在输出之前。

Why this escaped function doesnt seem?

在逃离这个法尔之后,似乎没有。我逃跑的错误是什么?真正的形式是什么?

<li><?php esc_html( \'<a href="#"> HOME </a>\' ); ?>xx</li>

的要点esc_html() 是为了防止值中的任何HMTL被解释为HTML。本例中没有需要转义的内容。如果链接URL是一个变量,则需要对其进行转义。

相关推荐

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