不可信的数据来自多个来源(用户、第三方站点,甚至您自己的数据库!),在使用前必须对所有数据进行核查。
请记住:管理员也是用户,用户可能会故意或无意地输入错误数据。保护他们免受自身伤害是您的责任。
清理输入是指对输入数据进行安全处理/清洗/过滤的过程。首选验证而非清理,因为验证更为具体。但在无法实现“更具体”的情况下,清理是次优选择。
示例
假设我们有一个名为 title 的输入字段:
<input id="title" type="text" name="title">我们无法在此处使用验证,因为文本字段过于通用:它可以包含任何内容。因此,我们使用 sanitize_text_field() 函数来清理输入数据:
$title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post->ID, 'title', $title );在幕后,sanitize_text_field() 执行以下操作:
- 检查无效的 UTF-8 字符
- 将单个小于号 (<) 转换为实体
- 移除所有标签
- 移除换行符、制表符和多余的空格
- 移除八进制字节
清理函数
有许多函数可帮助您清理数据。
sanitize_email()sanitize_file_name()sanitize_hex_color()sanitize_hex_color_no_hash()sanitize_html_class()sanitize_key()sanitize_meta()sanitize_mime_type()sanitize_option()sanitize_sql_orderby()sanitize_term()sanitize_term_field()sanitize_text_field()sanitize_textarea_field()sanitize_title()sanitize_title_for_query()sanitize_title_with_dashes()sanitize_user()sanitize_url()wp_kses()wp_kses_post()