Wordpress SQL 默认搜索,如何处理 SQL 注入
Posted
技术标签:
【中文标题】Wordpress SQL 默认搜索,如何处理 SQL 注入【英文标题】:Wordpress SQL default search, how to handle SQL Injection 【发布时间】:2017-06-24 05:46:04 【问题描述】:Wordpress默认SQL
搜索,默认搜索时如何处理SQL Injection
。
示例:Sitename.com/?q=test OR 1=1 --
即,
q=test%20or%201=1%20--
显示所有文章。
【问题讨论】:
【参考方案1】:为此,您可以使用三个钩子,
'posts_join' 挂钩将您的自定义表加入到 post 表中 'posts_where' 挂钩扩展查询的 WHERE 子句以查找 您的自定义表格字段。'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希望对您有所帮助
【讨论】:
嗨 Nahid,感谢您的输入,但我正在寻找这个示例:用户在搜索框中输入了“select * from wp_posts”。然后进行搜索提交。使用查询参数wordpress.org/search/select+%2A+from+wp_posts++--,即搜索结果:从 wp_posts 中选择 * -- (0)。我想自定义搜索结果,而不在占位符中添加查询。 对于 select 子句,您可以使用 add_filter( 'posts_groupby', 'prefix_search_select' );钩子。以上是关于Wordpress SQL 默认搜索,如何处理 SQL 注入的主要内容,如果未能解决你的问题,请参考以下文章
从 SQL Server 中检索各种存储过程的数据的单一方法,如何处理参数?