esc_url、esc_html、esc_attr ...函数的用法

Usage of esc_url, esc_html, esc_attr ... functions

何时绝对需要使用转义函数或作为良好实践使用转义函数?

例如将esc_url();用于:

get_template_directory_uri();
get_permalink();
get_author_posts_url();
get_edit_post_link();
wp_get_attachment_url();

esc_html();与:

get_the_title();
get_the_author();
get_the_date();
get_search_query();

另外我觉得esc_html();esc_attr();很相似,不是吗?有什么区别?

第 1 部分

根据文档 - Validating, Sanitizing, and Escaping WP VIP 团队。

指导原则

  1. 永远不要相信用户输入。
  2. 越晚越好
  3. 从不受信任的来源(如数据库和用户)、third-parties(如 Twitter)等处逃避一切
  4. 永远不要假设任何事情。
  5. 永远不要相信用户输入。
  6. 卫生还可以,但validation/rejection更好。
  7. 永远不要相信用户输入。

“Escaping isn’t only about protecting from bad guys. It’s just making our software durable. Against random bad input, against malicious input, or against bad weather.” –nb

第 2 部分

根据安迪·亚当斯的文章 - Introduction to WordPress Front End Security: Escaping the Things 来自 CSS-Tricks。

Function: esc_html

用于:输出中绝对没有 HTML 的输出。

它的作用:将 HTML 特殊字符(例如 <>&)转换为它们的“转义”实体(&lt; , &gt;, &amp;).

Function: esc_attr

用于:在 HTML 属性的上下文中使用的输出(想想“标题”、“数据”字段、“替代”文本)。

它的作用:与 esc_html 完全相同。唯一的区别是不同的 WordPress 过滤器应用于每个功能。