欢迎来到Introzo百科
Introzo百科
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程序设计有所帮助。
相关文章
- 10-06 2022年中国调味品行业发展趋势:健康概念成为消费
- 10-06 2022-2023年中国调味品行业:市场规模与消费
- 10-06 2022年中国调味品行业趋势:疫情推动行业分销渠道
- 10-06 对标大厂,微服务网关应该这样设计!
- 10-06 对标大厂,微服务网关应该这样设计!
- 10-06 摆脱恼人的 NullPointerExceptio
- 10-06 2.7k star,最强大的开源支付系统,马上就可
- 10-06 2.7k star,最强大的开源支付系统,马上就可
- 10-06 基于标签的时间跟踪工具 Traggo
- 10-06 面试官问我,try catch 应该放在 for
- 10-06 面试官问我try catch应该在for循环里面还
- 10-06 RocketMQ源码分析监控指标分析
- 10-06 《硬盘磁头修复》:让您的数据恢复如初! (硬盘磁头
- 10-06 教你如何在电脑店恢复丢失的U盘数据(电脑店U盘数据
- 10-06 如果手机上存储的数据被破坏了怎么办? (手机数据分
- 10-06 九月开学季新教师亮相班美丽句子(九月开学季美丽句子
- 10-06 UiPath 在 3B 轮 C 轮融资中获得 2.
- 10-06 什么是长焦镜头,什么是广角镜头(什么是长焦镜头)
- 10-06 vs2010对应msdn下载_如何下载安装Visu
- 10-06 stm32芯片焊接方向(stm32芯片焊接教程)
- 最近发表