用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7651|回复: 11
收起左侧

[讨论/交流] 好象不可以防SQL注入

  [复制链接]
发表于 2011-9-27 21:12:19 | 显示全部楼层 |阅读模式
添加新记录时。一些SQL命令和特殊符合还是依然被添加到了数据库中(select,update,')单引号之类的
$this->db->insert('news',$data);
发表于 2011-9-27 22:32:02 | 显示全部楼层


PHP复制代码
$data['field1'] = $this->input->post('field1', true);
复制代码


这样做依然会被添加进去吗?
发表于 2011-9-28 09:02:23 | 显示全部楼层
虽然被添加进去了,只不过ci没有提示你说有非法字符去了,注入的效果还是没有达到的
 楼主| 发表于 2011-9-28 09:29:54 | 显示全部楼层
jeongee 发表于 2011-9-28 09:02
虽然被添加进去了,只不过ci没有提示你说有非法字符去了,注入的效果还是没有达到的 ...

哦,知道了。是否可以这样理解?
CI过滤了特殊的SQL注入语句,从而防止注入。对于一些特殊字符或命令独立是不起作用的,即保持原样写入数据库。
发表于 2011-9-28 09:31:53 | 显示全部楼层
olive1 发表于 2011-9-28 09:29
哦,知道了。是否可以这样理解?
CI过滤了特殊的SQL注入语句,从而防止注入。对于一些特殊字符或命令独立 ...

是的
发表于 2011-9-28 14:17:52 | 显示全部楼层

评分

参与人数 1威望 -2 收起 理由
Hex -2 违反版规:纯表情回复

查看全部评分

发表于 2011-10-16 13:30:48 | 显示全部楼层
olive1 发表于 2011-9-28 09:29
哦,知道了。是否可以这样理解?
CI过滤了特殊的SQL注入语句,从而防止注入。对于一些特殊字符或命令独立 ...

应该就是这样,让SQL语句不生效,如果强行将有SQL语句的内容过滤掉。那如果文章是介绍数据库SQL语句的话,岂不是要被过滤死了?
发表于 2011-10-24 22:26:14 | 显示全部楼层
对于mysql,ci的ar是用mysql_escape_string()或者mysql_real_escape_string(),这两个函数配合ci的ar是可以彻底杜绝注入的
发表于 2011-10-26 08:59:37 | 显示全部楼层
a123123 发表于 2011-9-28 14:17

不知道有这个规定,纯属无意
发表于 2011-10-27 20:50:43 | 显示全部楼层
不错啊

本版积分规则