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 相关文章推荐
dedecms模板标签代码官方参考
Mar 17 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
thinkphp实现数组分页示例
Apr 13 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
PHP生成压缩文件实例
Feb 07 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
微信支付开发发货通知实例
Jul 12 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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类中Static方法效率测试代码
2010/10/17 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
详解vue高级特性
2020/06/09 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
Web服务器框架 Tornado简介
2014/07/16 Python
python实现的希尔排序算法实例
2015/07/01 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
Python实现快速排序的方法详解
2019/10/25 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
班队活动设计方案
2014/01/30 职场文书
项目采购员岗位职责
2014/04/15 职场文书
市政管理求职信范文
2014/05/07 职场文书
战略合作意向书
2014/07/29 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers