WordPress用于处理复杂查询的类WP_Query 对get参数安全过滤

15 4月

WordPress用于处理复杂查询的类WP_Query 对get参数安全过滤

开发过程中发现wpquery对sql并没有进行安全过滤,js和html还好,但是sql不过滤是要命的。

所以查了下官方文档,有这么几个函数:

esc_js esc_html esc_sql等等

<?php esc_sql( $sql ); ?>
但是我需要测试一下,这个到底是怎么过滤的sql,我总觉得哪里不太对。
esc_url()
用于过滤url可能会出现的地方,这个函数还有一定的处理url进入数据库的情况(当$_context为db时)

esc_js()
用于过滤输出点在js中的情况,转义" < > &,还会对换行做一些处理。

esc_html()
用于过滤输出点在html中的情况,相应的转义

esc_attr()
用于过滤输出点在标签属性中的情况,相应的转义

esc_textarea()
用于过滤输出点在textarea标签中的情况,相应的转义

tag_escape()
用于出现在HTML标签中的情况,主要是正则

补充:

注意,此函数只会转义要在查询中的字符串使用的值。也就是说,它仅为SQL中的引号内的值提供转义(如field = '{$escaped_value}')。如果您的值不在引号内,您的代码仍然容易受到SQL注入的攻击。例如,这很容易受到攻击,因为转义的值不会被SQL查询中的引号包围:ORDER BY {$escaped_value}。因此,此函数不会转义不带引号的数字值,字段名称或SQL关键字。

One Comments “WordPress用于处理复杂查询的类WP_Query 对get参数安全过滤

发表评论

电子邮件地址不会被公开。 必填项已用*标注