【发布时间】:2017-06-24 05:46:04
【问题描述】:
Wordpress默认SQL搜索,默认搜索时如何处理SQL Injection。
示例:Sitename.com/?q=test OR 1=1 --
即,
q=test%20or%201=1%20--
显示所有文章。
【问题讨论】:
Wordpress默认SQL搜索,默认搜索时如何处理SQL Injection。
示例:Sitename.com/?q=test OR 1=1 --
即,
q=test%20or%201=1%20--
显示所有文章。
【问题讨论】:
为此,您可以使用三个钩子,
'posts_groupby' 钩子在查询中添加一个 GROUP BY 子句
add_filter( 'posts_join', 'prefix_search_join' );
add_filter( 'posts_where', 'prefix_search_where' );
add_filter ( 'posts_groupby', 'prefix_search_groupby' );
function prefix_search_join( $join )
{
//global $custom_table contain your custom table name
global $custom_table, $wpdb;
if( is_search() ) {
//your joining sql
}
return $join;
}
function prefix_search_where( $where )
{
if( is_search() ) {
//Where clause
}
return $where;
}
function prefix_search_groupby( $groupby )
{
global $wpdb;
if( !is_search() ) {
return $groupby;
}
//we need to group on post ID
$mygroupby = "{$wpdb->posts}.ID";
if( preg_match( "/$mygroupby/", $groupby )) {
//grouping we need is already there
return $groupby;
}
if( !strlen(trim($groupby))) {
//groupby was empty, use ours
return $mygroupby;
}
//wasn't empty, append ours
return $groupby . ", " . $mygroupby;
}
欲了解更多详情,请查看此链接https://codex.wordpress.org/Custom_Queries希望对您有所帮助
【讨论】: