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编程开发“虚拟域名”系统
Oct 09 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP Web表单生成器案例分析
Jun 02 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 图片加水印与上传图片加水印php类
2010/05/12 PHP
PHP静态文件生成类实例
2014/11/29 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python中使用dom模块生成XML文件示例
2015/04/05 Python
python安装教程
2018/02/28 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
一道Delphi面试题
2016/10/28 面试题
上课迟到检讨书
2014/01/19 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
建筑工地质量标语
2014/06/12 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
经费申请报告
2015/05/15 职场文书
Python机器学习之底层实现KNN
2021/06/20 Python