本文实例分析了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注入隐患分析相关推荐

  1. url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解

    html.javascript.url特殊字符转义在实际编程中都是有用到的,有的人对特殊字符转义的使用不是很清楚,下面就对html,javascript,url特殊字符的转义做一下说明和归纳. htm ...

  2. Spring框架中提取list集合类型属性注入

    提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...

  3. Spring框架中集合属性为对象的注入方法

    Spring框架中集合属性为对象的注入方法 前言 创建基础类 创建`Course`类 编写XML配置文件 创建测试类 执行结果 前言 在集合的属性注入中,如果注入属性为普通类型(String.int) ...

  4. ThinkPHP3.2 框架sql注入漏洞分析(2018-08-23)

    0x00 前言 北京时间 2018年8月23号11:25分 星期四,tp团队对于已经停止更新的thinkphp 3系列进行了一处安全更新,经过分析,此次更新修正了由于select(),find(),d ...

  5. php ci rest,在CodeIgniter框架中使用RESTful服务

    步骤3 分析example_api.php 接下来,我们打开application/controllers/example_api.php文件,仔细分析其代码. 首先,在CodeIgniter中,我们 ...

  6. ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)

    php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看. e ...

  7. 在Codeigniter框架中使用NuSOAP

    0.NuSOAP的简介 NuSOAP 是一组功能强大的PHP类,这个工具的发布让使用和创建SOAP消息变得相当简单. NuSOAP有Dirtrich Ayala编写,可以无缝的与许多最流行的SOAP服 ...

  8. JS 和 Java 中URL特殊字符编码方式

    前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1.  编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...

  9. mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划

    explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...

最新文章

  1. 汇总 | 深度学习中图像语义分割基准数据集详解
  2. Oracle 11g dataguard主库坏块修复
  3. windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法
  4. 【机器学习算法-python实现】决策树-Decision tree(2) 决策树的实现
  5. 百雀羚、林清轩、逐本走红背后,植物基护肤品的春天来了?
  6. spring boot 整合多数据源JDBC、多数据源mybatis、多数据源springdata jpa
  7. js大屏导出图片_整理了30个实用可视化大屏模板,附源文件+工具
  8. 【HDU - 3440】House Man(差分约束)
  9. Zookeeper UI管理界面安装
  10. 【lucene】Lucene Tika 操作各种文件
  11. MySQL数据库的设计和命令行模式下建立详细过程
  12. python是什么专业学的-当我们学Python时,我们学什么?
  13. 通俗易懂的MonteCarlo积分方法(六)
  14. 漫画:什么是优先队列?
  15. 几万字的博文,你自己会看吗
  16. 产品分析之美团_米米米米粒口红_新浪博客
  17. dyndns免费动态域名
  18. 职业学校计算机和机电哪个好,职业学校都有什么专业10大热门专业
  19. 【最新面试】2022年软件测试面试题大全(持续更新)附答案
  20. SX1278 FSK 调试记录

热门文章

  1. h5 history
  2. python机械臂仿真_基于Python的3R机器人运动仿真
  3. mysql 加载数据校验_mysql 导入数据后的校验程序
  4. CentOS 7 安装版本管理 GitLab
  5. git Could not read from remote repository.Please make sure you have the correct access rights.
  6. HTTP系列学习(笔记三):HTTP的发展历程思维导图
  7. 为什么我直接在servlet里面直接输出message不乱码,而跳转到web页面就出现乱码,而且存到数据库的也是乱码,我尝试了网上的各种方法,还是不成功。。
  8. Java-instanceof和类型转换
  9. JS 打印 data数据_数据表格 Data Table - 复杂内容的15个设计点
  10. c语言cis,c语言小白学习历程第五篇