我正在使用自定义搜索页面,通常使用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>";
最合适的回答,由SO网友:Tom J Nowell 整理而成
如果没有,如何清理传入变量?
在大多数情况下,你不会,get_posts
呼叫WP_Query
内部,以及WP_Query
执行一些消毒,即通过wpdb->prepare
.
然而,对于你想做的事情来说,这是错误的方法。只需使用标准search.php
带有标准post循环的模板,并使用input
与的参数具有相同名称的字段WP_Query
. WP将自动过滤添加到URL的结果。不需要具有自定义查询和自定义URL参数的自定义页面模板。这只是不必要的复杂性,而且会使数据库查询增加一倍(不要忘记分页中断、处理404等)