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

[HELP] sql 注入式攻击问题,路过的帮帮

[复制链接]
发表于 2011-12-5 20:26:59 | 显示全部楼层 |阅读模式
PHP复制代码
 
      $query = $this->db->query("SELECT * FROM `student` WHERE `s_account`='".$data      
 
      ['account']."'`s_password`='".$data['pw']."' and `s_rank`='1' and `life`='1'");
         if ($query->num_rows() > 0)//查询是否有符合条件的记录
                        {  
                            foreach ($query->result() as $row)
                           {
                                if($data['pw']==$row['s_password']){  
                                 //登陆成功
                                    $users_array = array(
                                        'id' => $row->id,
                                        'name' => $row->s_name,
                                        'rank' => $row->s_rank,
                                        'logged_in' => TRUE
                                    );
                                    $this->session->set_userdata($users_array);//保存用户以上信息到seesion
                                    redirect('assessment/assessment'); //登陆成功后,跳转到相应控制器
                                }else{
                                  redirect('index');//跳转回登陆页
                                }
                           }
                         
                        }
 
 
复制代码


为什么 单密码框里 输入 0' or '1  的时候,还是可以登录呢?请问我需要改哪里。
 楼主| 发表于 2011-12-6 09:49:07 | 显示全部楼层
怎么 木有人说个话涅
发表于 2011-12-6 11:34:58 | 显示全部楼层
你把接到的值 进行转义一下
发表于 2011-12-6 12:31:29 | 显示全部楼层
登陆这种简单的sql查询直接用AR类提供的方法吧,可以防注入
PHP复制代码
$result = $this->db->get_where('student',array('s_account'=>$data))->row_array()
复制代码
 楼主| 发表于 2011-12-6 13:42:24 | 显示全部楼层
zhouli520 发表于 2011-12-6 12:31
登陆这种简单的sql查询直接用AR类提供的方法吧,可以防注入

看得不大懂  可不可以说仔细点
 楼主| 发表于 2011-12-6 13:43:17 | 显示全部楼层
留痕 发表于 2011-12-6 11:34
你把接到的值 进行转义一下

怎么转意丫
发表于 2011-12-7 12:34:28 | 显示全部楼层
栺尖灬丿流年ヽ 发表于 2011-12-6 13:42
看得不大懂  可不可以说仔细点

可以自行参考手册的Active Record 类 你就知道使用 方法了
发表于 2011-12-7 14:46:10 | 显示全部楼层
语句有问题,s_account = xxxx and s_passwork=.......中间没有'and'     其他不清楚
 楼主| 发表于 2011-12-8 12:16:18 | 显示全部楼层
zhouli520 发表于 2011-12-7 12:34
可以自行参考手册的Active Record 类 你就知道使用 方法了

  解决的 谢谢哈
发表于 2011-12-16 13:23:13 | 显示全部楼层
$this->input->post()
第一个参数是所要取得的post中的数据:

$this->input->post('some_data');

如果数据不存在,方法将返回 FALSE (布尔值)。

第二个参数是可选的,如果想让取得的数据经过跨站脚本过滤(XSS Filtering),把第二个参数设为TRUE。

本版积分规则