不可信的数据来自多个来源(用户、第三方站点,甚至您自己的数据库!),在使用前必须对所有数据进行核查。

请记住:管理员也是用户,用户可能会故意或无意地输入错误数据。保护他们免受自身伤害是您的责任。

清理输入是指对输入数据进行安全处理/清洗/过滤的过程。首选验证而非清理,因为验证更为具体。但在无法实现“更具体”的情况下,清理是次优选择。

示例

假设我们有一个名为 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() 执行以下操作:

  1. 检查无效的 UTF-8 字符
  2. 将单个小于号 (<) 转换为实体
  3. 移除所有标签
  4. 移除换行符、制表符和多余的空格
  5. 移除八进制字节

清理函数

有许多函数可帮助您清理数据。