ci mysql 转义,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重写的方法
ci mysql 转义,CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析相关推荐
- url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解
html.javascript.url特殊字符转义在实际编程中都是有用到的,有的人对特殊字符转义的使用不是很清楚,下面就对html,javascript,url特殊字符的转义做一下说明和归纳. htm ...
- Spring框架中提取list集合类型属性注入
提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...
- Spring框架中集合属性为对象的注入方法
Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...
- ThinkPHP3.2 框架sql注入漏洞分析(2018-08-23)
0x00 前言 北京时间 2018年8月23号11:25分 星期四,tp团队对于已经停止更新的thinkphp 3系列进行了一处安全更新,经过分析,此次更新修正了由于select(),find(),d ...
- php ci rest,在CodeIgniter框架中使用RESTful服务
步骤3 分析example_api.php 接下来,我们打开application/controllers/example_api.php文件,仔细分析其代码. 首先,在CodeIgniter中,我们 ...
- ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)
php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看. e ...
- 在Codeigniter框架中使用NuSOAP
0.NuSOAP的简介 NuSOAP 是一组功能强大的PHP类,这个工具的发布让使用和创建SOAP消息变得相当简单. NuSOAP有Dirtrich Ayala编写,可以无缝的与许多最流行的SOAP服 ...
- JS 和 Java 中URL特殊字符编码方式
前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1. 编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...
- mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划
explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...
最新文章
- 汇总 | 深度学习中图像语义分割基准数据集详解
- Oracle 11g dataguard主库坏块修复
- windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法
- 【机器学习算法-python实现】决策树-Decision tree(2) 决策树的实现
- 百雀羚、林清轩、逐本走红背后,植物基护肤品的春天来了?
- spring boot 整合多数据源JDBC、多数据源mybatis、多数据源springdata jpa
- js大屏导出图片_整理了30个实用可视化大屏模板,附源文件+工具
- 【HDU - 3440】House Man(差分约束)
- Zookeeper UI管理界面安装
- 【lucene】Lucene Tika 操作各种文件
- MySQL数据库的设计和命令行模式下建立详细过程
- python是什么专业学的-当我们学Python时,我们学什么?
- 通俗易懂的MonteCarlo积分方法(六)
- 漫画:什么是优先队列?
- 几万字的博文,你自己会看吗
- 产品分析之美团_米米米米粒口红_新浪博客
- dyndns免费动态域名
- 职业学校计算机和机电哪个好,职业学校都有什么专业10大热门专业
- 【最新面试】2022年软件测试面试题大全(持续更新)附答案
- SX1278 FSK 调试记录
热门文章
- h5 history
- python机械臂仿真_基于Python的3R机器人运动仿真
- mysql 加载数据校验_mysql 导入数据后的校验程序
- CentOS 7 安装版本管理 GitLab
- git Could not read from remote repository.Please make sure you have the correct access rights.
- HTTP系列学习(笔记三):HTTP的发展历程思维导图
- 为什么我直接在servlet里面直接输出message不乱码,而跳转到web页面就出现乱码,而且存到数据库的也是乱码,我尝试了网上的各种方法,还是不成功。。
- Java-instanceof和类型转换
- JS 打印 data数据_数据表格 Data Table - 复杂内容的15个设计点
- c语言cis,c语言小白学习历程第五篇