有人可以解释何时使用转义函数?
我的目标是确保我的Wordpress主题。我使用了Chris Coyier的空白主题,并添加了代码来制作我想要的网站。我注意到其他主题使用了逃避函数而不是Coyier的空白主题,所以我想知道在哪里插入这些主题。
在阅读Codex和谷歌搜索结果并研究几个主题的代码后,我仍不清楚何时使用
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 :(得分:5)
转义功能可以防止攻击和奇怪的角色。这些函数的一些功能是删除无效字符,删除危险字符,并将字符编码为HTML实体。
问题在于,不受信任的数据不仅来自用户,还来自您自己数据库中保存的内容。
作为一般规则,当URL的任何部分不是由Wordpress函数生成时,最好使用转义函数。如果整个URL仅由Wordpress函数生成,则不需要转义函数。
例如,如果您想打印URL并添加像这样的查询字符串
<?php echo esc_url(get_permalink() . '?order=time') ?>
你应该养成使用转义函数的习惯,因为你输入了一些实际的URL。
<?php echo add_query_arg('order', 'time', get_permalink()) ?>
但是,最好像这样使用 add_query_string 函数
{{1}}
在第二个示例中,您不需要转义函数,因为URL完全由Wordpress函数生成。
在问题的示例中, header.php 文件中不需要转义函数。编写该代码的人可能只是习惯这样做,即使不需要也可以放在那里。
开始阅读有关数据验证的好地方是Wordpress codex:https://codex.wordpress.org/Data_Validation
答案 1 :(得分:0)
您需要为任何用户插入的内容使用wordpress转义函数,而不是必要用于wordpress函数。但是在插件,模板,表单或类似的东西中你需要使用转义函数。
答案 2 :(得分:0)
你需要对任何用户插入内容使用wordpress转义函数,如John所说..
查看我提供的有关wordpress转义功能的链接..
http://codeseekah.com/2012/03/13/wordpress-escape-functions/