我正在运行一个简单的LIKE meta_query,如下所示:
$meta_query[] = array(
'key' => '_department',
'value' => sanitize_text_field( $_REQUEST['department'] ),
'compare' => 'LIKE'
);
// push to main WP_Query here
奇怪的是,如果我转储查询的$ wp_query-> request部分,它看起来像这样:
( mt2.meta_key = '_department' AND mt2.meta_value LIKE '{a4eeec5aa4c896cb300f5aab299d4336f74fcb91103252699f91d781f4df916a}residential-sales{a4eeec5aa4c896cb300f5aab299d4336f74fcb91103252699f91d781f4df916a}' )
看看%被奇怪的哈希替换了吗?对于所有LIKE查找来说都是一样的。我没有处于活动状态的插件,在法典中找不到对此的任何引用。
有人看过吗?
答案 0 :(得分:0)
从Wordpress 4.8.3开始,这是预期的行为,因为esc_sql()函数已被修改,并且现在会保留字符的md5哈希。
echo esc_sql( "100%" );
// "100{9fa52f39262a451892931117b9ab11b5a06d3a15faee833cc75edb18b4411d11}"
这样做是为了将pre-4.8.3 vulnerability修复为SQL注入攻击。
如果需要,可以通过以下调用获取转义的值:
echo $wpdb->remove_placeholder_escape( esc_sql( "100%" ) );
// "100%"