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= http://www.srcmini.com// 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') ?>

【esc_url()和WordPress安全性()】不过, 最好像这样使用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

    推荐阅读