使用 input->get 没有防止注入是为什么?
文档中写第2个参数加true可以防止ssx,
我的写法如下:
$clientid = $this->input->get("clientid",TRUE);
访问的时候填写如下:
index.php/?clientid=BSDYN412%27%20AND%205777%3D5777%20AND%20%27NNxvf%27%3D%27NNxvf
最后执行的sql,照样把注入的执行了,我用的是ar,为什么没有防止注入呢?
http://test.brandsh.cn/aaron/q13123.jpg
谢谢各位了~
longjianghu 发表于 2014-6-30 09:21
GET参数有你这么用的么,如果我有10个GET参数,你是不是也准备一个GET搞定? ...
访问的时候填写如下:
index.php/?clientid=BSDYN412%27%20AND%205777%3D5777%20AND%20%27NNxvf%27%3D%27NNxvf
不是啊,我就一个clientid=BSDYN412 这样一个参数,后面的是SQL注入,问题是AR也没过滤掉,我就不清楚是怎么回事了
你确定你用的AR?
不是用的$this->db->query()?
我试了一下,用$this->db->query()?
得到你的那个sql
用AR是
SELECT * FROM (`erp_news`) WHERE `id` = 'BSDYN412\' AND 5777=5777 AND \'NNxvf\'=\'NNxvf' 燃雲 发表于 2014-7-1 11:42
跟
这只是一个列子
我用阿里云的服务器检测出来的SQL注入危险,那么我只是说这个参数接收的时候有没有办法过滤?因为我只需要接收一个ID,如果有多余的东西一起运行了SQL那不是会有危险吗?
看得呆了!
1. XSS什么时候成了ssx?
2. XSS与SQL有什么关系? 燃雲 发表于 2014-6-28 07:08
看得呆了!
1. XSS什么时候成了ssx?
额,写错了,其实我的意思说,注入没有防住这是为什么呢?
没有人可以回答下么??? 本帖最后由 longjianghu 于 2014-7-7 08:13 编辑
你这个就是一个没有明显错误的BUG。CI帮你把基础工作搞定,其它的还是需要你自己处理。 楼主要明确一个概念,XSS 防止的不是 SQL 注入。
XSS 全称:跨站脚本攻击,这个是攻击浏览器页面的,这个跟 SQL 没有任何关系。
所以,这里防止的是 XSS 攻击,如果想防止 SQL 注入,请使用 Active Record。 Hex 发表于 2014-6-30 13:19
楼主要明确一个概念,XSS 防止的不是 SQL 注入。
XSS 全称:跨站脚本攻击,这个是攻击浏览器页面的,这个跟 ...
谢谢回答~
我这边就是使用的AR哦,但是我这个参数中有转码一些sql语句还是运行了啊。。
fishgo1 发表于 2014-6-30 18:24
谢谢回答~
我这边就是使用的AR哦,但是我这个参数中有转码一些sql语句还是运行了啊。。
什么语句运行了?防止注入不是阻止SQL运行,而是让SQL无害化。
where `clientid`='BSDYN412' AND 5777=5777 AND 'NNxvf'='NNxvf'
跟
where `clientid`='BSDYN412'
有何分别?
注入了什么?
真是气功高手!我有点吐血的感觉!
页:
[1]
2