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 团队。
指导原则
- 永远不要相信用户输入。
- 越晚越好
- 从不受信任的来源(如数据库和用户)、third-parties(如 Twitter)等处逃避一切
- 永远不要假设任何事情。
- 永远不要相信用户输入。
- 卫生还可以,但validation/rejection更好。
- 永远不要相信用户输入。
“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 特殊字符(例如 <
、>
、&
)转换为它们的“转义”实体(<
, >
, &
).
Function: esc_attr
用于:在 HTML 属性的上下文中使用的输出(想想“标题”、“数据”字段、“替代”文本)。
它的作用:与 esc_html
完全相同。唯一的区别是不同的 WordPress 过滤器应用于每个功能。
何时绝对需要使用转义函数或作为良好实践使用转义函数?
例如将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 团队。
指导原则
- 永远不要相信用户输入。
- 越晚越好
- 从不受信任的来源(如数据库和用户)、third-parties(如 Twitter)等处逃避一切
- 永远不要假设任何事情。
- 永远不要相信用户输入。
- 卫生还可以,但validation/rejection更好。
- 永远不要相信用户输入。
“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 特殊字符(例如 <
、>
、&
)转换为它们的“转义”实体(<
, >
, &
).
Function:
esc_attr
用于:在 HTML 属性的上下文中使用的输出(想想“标题”、“数据”字段、“替代”文本)。
它的作用:与 esc_html
完全相同。唯一的区别是不同的 WordPress 过滤器应用于每个功能。