esc_url()和Wordpress安全?

lek*_*eko 6 php wordpress wordpress-theming

有人可以解释何时使用转义函数?

我的目标是确保我的Wordpress主题.我使用了Chris Coyier的空白主题,并添加了代码来制作我想要的网站.我注意到其他主题使用了逃避函数而不是Coyier的空白主题,所以我想知道在哪里插入这些.

在阅读了Codex和谷歌搜索结果并研究了几个主题的代码后,我仍然不清楚何时使用

esc_url()  
esc_attr()  
esc_html()  
Run Code Online (Sandbox Code Playgroud)

我没有看到何时使用这些的模式.例如,在一个主题中,对于home_url('/') - 请注意esc_url用于header.php但不用于searchform.php - 为什么?

header.php文件

<a href=
// NOTICE ESCAPING FUNCTION BELOW
"<?php echo esc_url( home_url( '/' ) ); ?>"
title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
Run Code Online (Sandbox Code Playgroud)

searchform.php

<form role="search" method="get" id="searchform" action=
// NO ESCAPING FUNCTION BELOW
"<?php echo home_url( '/' ); ?>"
>
Run Code Online (Sandbox Code Playgroud)

Jos*_*sen 5

逃逸功能可以防止攻击和怪异的角色.这些函数的一些功能是删除无效字符,删除危险字符,并将字符编码为HTML实体.

问题是不受信任的数据不仅来自用户,而且可能来自您自己的数据库中保存的内容.

作为一般规则,当URL的任何部分不是由Wordpress函数生成时,最好使用转义函数.如果整个URL仅由Wordpress函数生成,则不需要转义函数.

例如,如果要打印URL并添加这样的查询字符串

<?php echo get_permalink() . '?order=time' ?>
Run Code Online (Sandbox Code Playgroud)

你应该养成使用转义函数的习惯,因为你输入了一些实际的URL.

<?php echo esc_url(get_permalink() . '?order=time') ?>
Run Code Online (Sandbox Code Playgroud)

不过,好像这样使用add_query_string函数

<?php echo add_query_arg('order', 'time', get_permalink()) ?>
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,您不需要转义函数,因为URL完全由Wordpress函数生成.

在您的问题示例中,header.php文件中不需要转义函数.编写该代码的人可能只是习惯这样做,即使不需要也可以放在那里.

开始阅读数据验证的好地方是Wordpress codex:https://codex.wordpress.org/Data_Validation


Joh*_*ohn 0

对于任何用户插入的内容,您都需要使用 WordPress 转义功能,而WordPress 功能则不需要。但在插件、模板、表单或类似的东西中,您需要使用转义函数。