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中利用XML技术构造远程服务(下)
Oct 09 PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 PHP
PHP strtotime函数详解
Dec 18 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php实现的短网址算法分享
Jun 20 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
Oct 22 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 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
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
destoon数据库表说明汇总
2014/07/15 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Python使用遗传算法解决最大流问题
2018/01/29 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
Python中的self用法详解
2019/08/06 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
企业宣传策划方案
2014/05/29 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
计划生育个人总结
2015/03/02 职场文书
电影地道战观后感
2015/06/04 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技