澳门金莎娱乐手机版 金沙澳门手机版网址 本文实例分析了CI框架中URL特殊字符处理与SQL注入隐患,本文实例讲述了CI框架AR操作实现插入多条sql数据的方法

本文实例分析了CI框架中URL特殊字符处理与SQL注入隐患,本文实例讲述了CI框架AR操作实现插入多条sql数据的方法

本文实例讲述了CI框架AR操作实现插入多条sql数据的方法。分享给大家供大家参考,具体如下:

本文实例分析了CI框架中URL特殊字符处理与SQL注入隐患。分享给大家供大家参考,具体如下:

本文实例讲述了CI框架支持$_GET的两种实现方法。分享给大家供大家参考,具体如下:

如果你不使用AR的话,你可以这样做:

php
CI框架中URL特殊字符有很多是不支持的,导致像c++,括号这些常用的分类,字符都无法正常显示很头痛,而在配置里增加单引号’
反斜杠 这种特殊字符又很容易给sql注入

首先ci框架在2.0以后就支持GET了,所以使用毫无压力!

INSERT INTO TABLE  VALUES ;$this->db->query;

在默认的config配置基础上加上:+=()特殊字符

1.使用get传递参数的方法:

个人还是喜欢CI的AR操作,老版本应该没有插入多条数据的操作,新版本可以用:

#$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';$config['permitted_uri_chars'] ='a-z 0-9~%.:_-+=()';

CI会自动将超过URI的两部分作为参数传给方法。可以去看手册:CI框架中文手册

$this->db->insert_batch();

在CI框架中,尽量使用AR类进行数据库查询是比较靠谱的,因为在底层会帮助使用者进行一次有效的转义,但也仅仅是转义而已。

如下:localhost/index.php/jb51/func/a/b

$data = array( array( 'name' => 'PHP' , 'url' => '//www.jb51.net' ), array( 'name' => '脚本之家' , 'url' => '//www.jb51.net' ));$this->db->insert_batch;

过滤的方法是escape_str()

那么控制器中的方法php代码如下:

澳门金莎娱乐手机版,以上生成的sql就是这样的:复制代码
代码如下:INSERT INTO mytable VALUES (‘PHP’,’//www.jb51.net’),(
‘脚本之家’, ‘//www.jb51.net’)

function escape_str{ var_dump; echo "n" ; if  { foreach  { $str[$key] = escape_str; } return $str; } if (function_exists('mysql_real_escape_string')) { $str = addslashes; } elseif (function_exists('mysql_escape_string')) { $str = mysql_escape_string; } else { $str = addslashes; } // escape LIKE condition wildcards if  { $str = str_replace, array; } return $str;}

如上:a和b被传给了func方法

总结:ci框架中的数据库快捷操作类中的数据参数一般为一维关联数组

该方法仅仅是调用了一些转义函数,并对like参数进行过滤。

2.想象看,如果你的参数很长的话,这种方法肯定是行不通的,ok,这样办:

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend
FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

如果查询的变量没有被单引号包裹,那么就无法进行保护

将config.php 中,将’uri_protocol’ 设置为

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

ci 框架默认的过滤函数是escape :

$config['uri_protocol'] = "PATH_INFO";

parse_str($_SERVER['QUERY_STRING'], $_GET);
xx". $this->db->escape ."xx

这样你就可以轻松用这样index.php/jb51/func?x=a&y=b方式传递参数了。

由于数组的$key过滤不严直接带入SQL查询的漏洞屡见不鲜:

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend
FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

$arr = array( 'name'=>"2' and 1=2", "hello'"=>"2"););

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

Array( [name] => 2′ and 1=2 [hello’ union select ] => 2)

如果真实sql语句传入上面两个参数合并起来就可以查询出所有信息了,属于sql注入了

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend
FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图