WordPress元查询喜欢奇怪的字符串/哈希

时间:2018-08-07 09:31:23

标签: php mysql wordpress

我正在运行一个简单的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查找来说都是一样的。我没有处于活动状态的插件,在法典中找不到对此的任何引用。

有人看过吗?

1 个答案:

答案 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%"