• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析

    本文实例分析了CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患。分享给大家供大家参考,具体如下:

    php CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分类,字符都无法正常显示很头痛,而在配置里增加单引号' 反斜杠\ 这种特殊字符又很容易给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参数进行过滤。

    如果查询的变量没有被单引号包裹,那么就无法进行保护

    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相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

    您可能感兴趣的文章:
    • 浅谈php(codeigniter)安全性注意事项
    • CodeIgniter安全相关设置汇总
    • CodeIgniter框架过滤HTML危险代码
    • CodeIgniter删除和设置Cookie的方法
    • Codeigniter实现处理用户登录验证后的URL跳转
    • CodeIgniter框架URL路由总结
    • 解析如何去掉CodeIgniter URL中的index.php
    • CodeIgniter针对lighttpd服务器URL重写的方法
    上一篇:PHP删除数组中特定元素的两种方法
    下一篇:PHP微信发送推送消息乱码的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析 CodeIgniter,框架,中,URL,特殊,