首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元中类似的WP_Query给出了奇怪的查询

元中类似的WP_Query给出了奇怪的查询
EN

WordPress Development用户
提问于 2018-05-01 09:57:11
回答 1查看 1.4K关注 0票数 3
代码语言:javascript
复制
$results = new WP_Query( array(
    'post_type' => 'questions',
    'post_status' => 'publish',
    'no_found_rows' => '1',
    'nopaging' => '1',
    'ignore_sticky_posts' => '1',
    'orderby' => 'rand',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'reference-1',
            'value' => 'lucht',
            'compare' => '='
        ),
        array(
            'key' => 'reference-2',
            'value' => 'lucht',
            'compare' => '='
        )
    )
));
echo $results->request;

给出:从wp_posts.*内部连接wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )中选择1=1和( wp_postmeta.meta_key = 'response‘和wp_postmeta.meta_value = 'lucht’)或( wp_postmeta.meta_key =‘答案’和wp_postmeta.meta_value = 'lucht‘)和wp_posts.post_type =’问句‘和(wp_posts.post_status=’发布‘)。)由RAND()按wp_posts.ID顺序分组

现在替换meta_query比较=喜欢:

代码语言:javascript
复制
...
'meta_query' => array(
    'relation' => 'OR',
    array(
        'key' => 'reference-1',
        'value' => 'lucht',
        'compare' => 'LIKE'
    ),
    array(
        'key' => 'reference-2',
        'value' => 'lucht',
        'compare' => 'LIKE'
    )
)
...

给出:从'{c33232364fb7d50ba632c808436b28560295aade9067a11e1fc4ae1c5879c13d}lucht{c33232364fb7d50ba632c808436b28560295aade9067a11e1fc4ae1c5879c13d}‘内部连接wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )中选择wp_posts.*,其中1=1和( wp_postmeta.meta_key = 'response’和wp_postmeta.meta_value类似于wp_postmeta.meta_key )或(wp_postmeta.meta_key= 'answers‘和wp_postmeta.meta_value类似于1=1)和wp_posts.post_type =’问句‘和((( wp_posts.post_status =‘发布’))按wp_posts.ID顺序由RAND()分组

{c33232364fb7d50ba632c808436b28560295aade9067a11e1fc4ae1c5879c13d}似乎是大括号中的一些随机值64字节值。如果是%,查询就会正常工作。

我在两台不同的服务器(4.9.5)上进行了测试,关闭了所有插件。

问题是:我在这里做了什么错事,还是应该创建一个bug票据?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2018-05-01 10:10:34

不,您做的一切都是正确的,这实际上应该工作,因为这些占位符将在稍后的某个点被移除,然后才能真正执行查询。

这是WordPress 4.8.3引入的安全措施的一部分。引用相应的开发人员说明:

作为WordPress 4.8.3发行版的一部分,esc_sql()行为的改变可能会影响插件开发人员,他们期望esc_sql()返回一个在构建要发送给WPDB的查询上下文之外可用的字符串。来源:https://make.wordpress.org/core/2017/10/31/changed-behaviour-of-esc_4-8-3/

如果你真的对正在发生的事情感到好奇,请阅读安东尼·费拉拉的博客文章,他发现了潜在的漏洞:https://blog.ircmaxell.com/2017/10/disclosure-wordpress-wpdb-sql-injection-technical.html

票数 4
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/302389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档