WordPress代码安全防范-过滤清洗函数防注入

  

安全的输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sanitize_email()
sanitize_file_name()
sanitize_html_class()
sanitize_key()
sanitize_meta()
sanitize_mime_type()
sanitize_option()
sanitize_sql_orderby()
sanitize_text_field()
sanitize_title()
sanitize_title_for_query()
sanitize_title_with_dashes()
sanitize_user()
esc_url_raw()
wp_filter_post_kses()
wp_filter_nohtml_kses()

示例:
示例 - 简单输入字段#示例 - 简单输入字段
假设我们有一个名为 title 的输入字段。

1
<input id="title" type="text" name="title">

您可以使用sanitize_text_field()函数清理输入数据:

1
2
$title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post->ID, 'title', $title );

在幕后,sanitize_text_field()执行以下操作:
检查无效的 UTF-8
将单个小于号 (<) 转换为实体 剥离所有标签 删除换行符、制表符和额外的空白 剥离八位字节 安全的输出

1
2
3
4
5
6
7
8
9
esc_attr() – 用于打印到 HTML 元素属性中的所有其他内容。
esc_html() – 在 HTML 元素包含正在显示的数据部分的任何时候使用。
esc_js() - 用于内联 Javascript。
esc_textarea() – 使用它来编码文本以在 textarea 元素中使用。
esc_url() – 用于所有 URL,包括HTML 元素的src和href属性中的URL 。
esc_url_raw() – 在数据库中存储 URL 或其他需要非编码 URL 的情况下使用。
wp_kses() – 用于所有不受信任的 HTML(发布文本、评论文本等)
wp_kses_post() -wp_kses()自动允许帖子内容中允许的所有 HTML 的替代版本。
wp_kses_data() –wp_kses()只允许在帖子评论中允许的 HTML 的替代版本。

详见
https://developer.wordpress.org/themes/theme-security/data-sanitization-escaping/
https://developer.wordpress.org/plugins/security/securing-input/

账号密码登录