esc_sql() 函数
用途:专门用于转义 SQL 查询中的字符串,防止 SQL 注入
功能:
- 转义 SQL 特殊字符(单引号、反斜杠等)
- 只转义,不清理其他内容
- 保留原始字符串内容
适用场景:
- 直接拼接 SQL 查询时(不推荐,应该用 $wpdb->prepare())
- 需要保留原始数据格式时
示例:
$domain = esc_sql( $_POST['domain'] );
// 如果输入是: test'domain
// 输出: test\'domain
缺点:
- 如果忘记使用 $wpdb->prepare(),仍然有 SQL 注入风险
- WordPress 官方不推荐单独使用,应该配合 $wpdb->prepare()
sanitize_text_field() 函数
用途:清理和验证文本字段输入
功能:
- 去除 HTML 标签
- 去除换行符、制表符
- 去除首尾空格
- 转义特殊字符
- 限制长度(默认 200 字符)
适用场景:
- 表单输入清理
- 用户提交的文本数据
- 存储到数据库前的一般清理
示例:
$domain = sanitize_text_field( $_POST['domain'] );
// 如果输入是: <script>test</script>domain
// 输出: testdomain
优点:
- 更全面的清理
- 防止 XSS 攻击
- 适合表单输入
最佳实践
推荐方式(使用 $wpdb->prepare())
// ✅ 最佳实践
$domain = sanitize_text_field( $_POST['domain'] );
$wpdb->query( $wpdb->prepare( "SELECT * FROM table WHERE domain = %s", $domain ) );
不推荐方式(直接拼接)
// ❌ 不推荐,即使使用了 esc_sql()
$domain = esc_sql( $_POST['domain'] );
$wpdb->query( "SELECT * FROM table WHERE domain = '$domain'" );
总结
| 特性 | esc_sql() | sanitize_text_field() |
|---|---|---|
| 主要用途 | SQL 转义 | 文本字段清理 |
| 防止 SQL 注入 | 部分(需配合 prepare) | 部分(需配合 prepare) |
| 防止 XSS | 否 | 是 |
| 清理 HTML | 否 | 是 |
| 推荐使用场景 | 很少(已弃用) | 表单输入清理 |
| WordPress 推荐 | 不推荐单独使用 | 推荐用于表单输入 |
结论
对于表单输入:
- 使用
sanitize_text_field()清理输入 - 然后使用
$wpdb->prepare()进行 SQL 查询
对于 SQL 查询:
- 永远使用
$wpdb->prepare(),不要依赖esc_sql()
声明:1、本站大部分资源均为网络采集所得,仅供用来学习研究,请于下载后的24h内自行删除,正式商用请购买正版。2、所有汉化类文件和个别标注了“原创”的产品均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。3、如若本站内容侵犯了原著者的合法权益,请携带相关版权文件联系我们进行下架或删除。4、虚拟下载类资源具有可复制性,一经下载后本站有权拒绝退款或更换其他商品!

评论0 注意:评论区不审核也不处理售后问题!如有售后问题请前往用户中心提交工单以详细说明!