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


Posted in PHP onFebruary 28, 2019

本文实例分析了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框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP截取中文字符串的问题
Jul 12 PHP
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP 身份证号验证函数
May 07 PHP
php的一些小问题
Jul 03 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
PHP删除数组中特定元素的两种方法
Feb 28 #PHP
PHP实时统计中文字数和区别
Feb 28 #PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 #PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 #PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 #PHP
asp函数split()对应php函数explode()
Feb 27 #PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 #PHP
You might like
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php随机抽奖实例分析
2015/03/04 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHP实现微信对账单处理
2018/10/01 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
Django框架自定义session处理操作示例
2019/05/27 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Python PyQt5整理介绍
2020/04/01 Python
基于python实现删除指定文件类型
2020/07/21 Python
用Python 执行cmd命令
2020/12/18 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
质检员岗位职责
2015/02/03 职场文书
公务员年终个人总结
2015/02/12 职场文书
家长会后的感想
2015/08/11 职场文书
python的变量和简单数字类型详解
2021/09/15 Python
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
MySQL 开窗函数
2022/02/15 MySQL