get_posts() SQL Injection

时间:2020-08-10 作者:Taurian

我正在使用自定义搜索页面,通常使用wpdb->;制作自定义查询时准备。但这次我使用get\\u posts创建了下面的查询。但我想知道我是否必须担心它的SQL注入。我应该吗?或者get\\u posts()是否内置了这种安全机制?

如果没有,如何清理传入变量?

$SEARCH_QUERY = @$_GET[\'s2\'];

$args2 = array(
    \'orderby\'          => \'date\',
    \'order\'            => \'DESC\',
    \'s\'                => $SEARCH_QUERY
);

$arrSearchResults = get_posts($args2);

echo "<pre>";
print_r($arrSearchResults);
echo "</pre>";

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

如果没有,如何清理传入变量?

在大多数情况下,你不会,get_posts 呼叫WP_Query 内部,以及WP_Query 执行一些消毒,即通过wpdb->prepare.

然而,对于你想做的事情来说,这是错误的方法。只需使用标准search.php 带有标准post循环的模板,并使用input 与的参数具有相同名称的字段WP_Query. WP将自动过滤添加到URL的结果。不需要具有自定义查询和自定义URL参数的自定义页面模板。这只是不必要的复杂性,而且会使数据库查询增加一倍(不要忘记分页中断、处理404等)

相关推荐

Wpdb替换返回1,其中需要删除和插入

如果我输入一行,其中wpdb->replace使用一个已经存在的ID,它将被替换,并返回2。如果输入新行,则自动生成ID,插入新行并返回1。完美的但是,如果输入的行与现有行完全匹配(我仍然希望删除并插入),则返回1(即使没有在数据库中插入新行)。为什么会这样?!当一行插入到我的数据库中时,我正在尝试插入一篇文章。ie.)更换时返回1。但当我插入现有行的精确副本时,我也会收到新的帖子。function xxxx_insert_entry( $post_id, $entry, $type, $entry