个性化阅读
专注于IT技术分析

esc_url()和WordPress安全性?

有人可以解释何时使用转义功能吗?

我的目标是保护我的Wordpress主题。我使用了Chris Coyier的空白主题, 并添加了代码以创建所需的网站。我注意到其他主题都使用了转义功能, 但没有使用Coyier的空白主题, 因此我想了解在何处插入这些主题。

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

esc_url()  
esc_attr()  
esc_html()  

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

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>

searchform.php

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

#1


转义功能可防止攻击和怪异角色。函数执行的一些操作是删除无效字符, 删除危险字符并将字符编码为HTML实体。

问题在于, 不受信任的数据不仅来自用户, 还可能来自保存在你自己的数据库中的数据。

通常, 当Wordpress函数未生成URL的任何部分时, 最好使用转义函数。如果整个URL仅由Wordpress函数生成, 则不需要转义函数。

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

<?php echo get_permalink() . '?order=time' ?>

你应该习惯使用转义功能, 因为你键入了一些实际的URL。

<?php echo esc_url(get_permalink() . '?order=time') ?>

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

<?php echo add_query_arg('order', 'time', get_permalink()) ?>

在第二个示例中, 你将不需要转义功能, 因为URL完全由Wordpress函数生成。

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

开始阅读有关数据验证的一个好地方是在Wordpress Codex上:https://codex.wordpress.org/Data_Validation


#2


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


#3


你需要对任何用户插入内容使用wordpress转义功能, 如John所说..

看看我提供的有关wordpress转义功能的链接。

WordPress Escape Functions

赞(0)
未经允许不得转载:srcmini » esc_url()和WordPress安全性?

评论 抢沙发

评论前必须登录!