2014-07-23 41 views
4

有人可以解释何时使用转义函数吗?esc_url()和Wordpress安全性?

我的目标是确保我的WordPress主题。我使用了Chris Coyier的空白主题,并添加了代码来制作我想要的网站。我注意到其他主题使用了转义函数,但不是Coyier的空白主题,所以我想了解插入这些主题的位置。

阅读食品和谷歌搜索结果和研究的几个主题代码后,我就什么时候使用

esc_url() 
esc_attr() 
esc_html() 

我不明白何时使用这些模式还不清楚。例如,在一个主题中,对于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> 

searchform.php

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

回答

0

您需要使用WordPress的逃生功能,任何用户插入的内容,而不是necesary WordPress的功能。但在插件,模板,表单或类似的东西,你需要使用转义函数。

+0

约翰,你能澄清..... 1.用户插入的内容,你的意思是搜索表单,联系表和通讯注册? ..... 2.在我的关于home_url('/')的例子中,你能解释为什么在header.php中使用esc_url(),而不是在searchform.php中使用?这些php文件在相同的主题内。 – leko

+0

在searchform.php中没有使用,因为不是必须的,因为它们用于转义任何东西,我猜 – John

+0

但是不是searchform被认为是“用户插入的”内容吗?因此,你会使用esc_url()...正确吗? – leko

0

你需要像约翰说,使用WordPress的逃生功能,任何用户插入的内容..

看一看我提供了了解WordPress的逃逸功能的链接..

http://codeseekah.com/2012/03/13/wordpress-escape-functions/

+1

只包含或主要链接的答案是不鼓励,作为内容远程站点可能会改变或消失,读者必须点击链接才能看到它是否有用。推荐的方法是总结答案本身的要点,并将链接包含为“进一步阅读”。 – IMSoP

4

转义函数用于防止攻击和怪异的字符。这些功能所做的一些事情是删除无效字符,删除危险字符以及将字符编码为HTML实体。

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

作为一般规则,当URL的任何部分不是由Wordpress函数生成时,最好使用转义函数。如果整个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()) ?> 

在第二个例子中,因为是由WordPress功能完全生成的URL,你就不会需要一个逃生功能。

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

一个很好的开始阅读有关数据验证将是对WordPress的抄本:https://codex.wordpress.org/Data_Validation