【问题标题】:WordPress Meta Query LIKE Weird String/HashWordPress 元查询喜欢奇怪的字符串/哈希
【发布时间】:2018-08-07 09:31:22
【问题描述】:

我正在运行一个简单的 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 查找都是相同的。我没有激活的插件,并且在法典中找不到对此的任何引用。

有人见过这个吗?

【问题讨论】:

  • 显示 sanitize_text_field 函数
  • 我猜这不是你工作的正确代码?你对比=怎么变成LIKE
  • @cjmling 你说得对。道歉。已更正。
  • @MIhai If I var_dump(sanitize_text_field( $_REQUEST['address_keyword'] ));我得到了我期望的价值。没有什么不寻常的

标签: php mysql wordpress


【解决方案1】:

这是从 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%"

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 1970-01-01
    • 2019-04-17
    • 2020-04-15
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多