不受信任的数据来自许多来源(用户、第三方站点,甚至您自己的数据库!),所有这些数据在使用前都需要进行检查。
请记住:即使是管理员也是用户,用户会有意或无意地输入不正确的数据。你的工作是保护他们免受自己的伤害。
清理输入是保护/清理/过滤输入数据的过程。验证优先于清理,因为验证更具体。但是,当“更具体”是不可能的时,消毒是下一个最好的选择。
例
假设我们有一个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()