1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
      <output id="hzk7v"></output>
    2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
    3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

      CI£¨CodeIgniter£©框架中URL特殊字符处理与SQL注入隐患分析

       更新时间£º2019年02月28日 10:59:27   作者£º流风£¬飘然的风   我要评论

      这篇文章主要介绍了CI£¨CodeIgniter£©框架中URL特殊字符处理与SQL注入隐患,结合实例形式分析了CodeIgniter框架中针对特殊字符的过滤及SQL注入隐患的相关原理,需要的朋友可以参考下

      本文实例分析了CI£¨CodeIgniter£©框架中URL特殊字符处理与SQL注入隐患¡£分享给大家供大家参考£¬具体如下£º

      php CI框架中URL特殊字符有很多是不支持的£¬导致像c++£¬括号这些常用的分类£¬字符都无法正常显示很头痛£¬而在配置里增加单引号' 反?#22791;Ü\ 这种特殊字符又很容易给sql注入

      在默认的config配置基础上加上£º+=()特殊字符

      #$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
      $config['permitted_uri_chars'] ='a-z 0-9~%.:_\-\+=()';
      
      

      在CI框架中£¬尽量使用AR类进行数据库查询是比较靠谱的£¬因为在底层会帮助使用者进行一次有效的转义£¬但也仅仅是转义而已¡£

      过滤的方法是escape_str() £º

      function escape_str($str, $like = FALSE)
      {
        var_dump($str);
        echo "\n" ;
        if (is_array($str))
        {
          foreach ($str as $key => $val)
          {
            $str[$key] = escape_str($val, $like);
          }
          return $str;
        }
        if (function_exists('mysql_real_escape_string'))
        {
          $str = addslashes($str);
        }
        elseif (function_exists('mysql_escape_string'))
        {
          $str = mysql_escape_string($str);
        }
        else
        {
          $str = addslashes($str);
        }
        // escape LIKE condition wildcards
        if ($like === TRUE)
        {
          $str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
        }
        return $str;
      }
      
      

      该方法仅仅是调用了一些转义函数£¬并对like参数进行过滤¡£

      如果查询的变量没有被单引号包裹£¬那么就无法进?#26012;?#25252;

      ci 框架默认的过滤函数是escape £º

      xx". $this->db->escape ( $xxx )."xx
      
      

      由于数组的$key过滤不严直接带入SQL查询的漏洞屡见不鲜:

      $arr = array(
        'name'=>"2' and 1=2",
        "hello'"=>"2");
      );
      
      

      输出结果£º

      Array(
          [name] => 2\' and 1=2
          [hello' union select ] => 2
      )

      如果真实sql语句传入上面两个参数合并起来就可以查询出所有信息了£¬属于sql注入了

      更多关于CodeIgniter相关内容?#34892;?#36259;的读者可查看本站专题£º¡¶codeigniter入门教程¡·¡¢¡¶CI(CodeIgniter)框架进阶教程¡·¡¢¡¶php优秀开发框架总结¡·¡¢¡¶ThinkPHP入门教程¡·¡¢¡¶ThinkPHP常用方法总结¡·¡¢¡¶Zend FrameWork框架入门教程¡·¡¢¡¶php面向对象程序设计入门教程¡·¡¢¡¶php+mysql数据库操作入门教程¡·及¡¶php常见数据库操作技巧汇总¡·

      希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助¡£

      相关文章

      最新评论

      3dÊÔ»úºÅÖвÊÍø

        1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
          <output id="hzk7v"></output>
        2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
        3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>

            1. <output id="hzk7v"><pre id="hzk7v"><address id="hzk7v"></address></pre></output>
              <output id="hzk7v"></output>
            2. <nav id="hzk7v"><i id="hzk7v"><em id="hzk7v"></em></i></nav>
            3. <listing id="hzk7v"><delect id="hzk7v"><em id="hzk7v"></em></delect></listing>