【问题标题】:Wordpress SQL default search, how to handle SQL InjectionWordpress SQL 默认搜索,如何处理 SQL 注入
【发布时间】: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-injection


    【解决方案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' );钩子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    相关资源
    最近更新 更多