• 防止SQL注入


    我们在检验用户名是否合法的sql语句是这样的

    select * from my_user where user='$id' and pwd=$pwd; 

    如果我们输入的是‘or 1 #,此时的sql语句变成了

    select * from my_user where user='' or 1 # and pwd=$pwd;

    这样一来,#后面为注释就不解析了?用户名=' ' or 1 永远为真

    所以 我们引入来sql注入方法,考虑到前台home也使用,所以在基础控制器中添加方法

            /**
             * 对用户安全数据进行过滤
             */
    
             protected function filterUser($str){
                 //通过使用addslashes函数对单引号使用反斜杠转义
                return addslashes(strip_tags(trim($str)));
             }

    控制在接收的时候

      //效验登录
        public function checkAction(){
            
            //接收表单数据并去除标签和空格,并且放置sql注入
            $admin= $this->filterUser($_SESSION['admin']);
            $pwd=$_POST['pwd'];
            $code=trim($_POST['passcode']);
    
            //检验验证码是否非法
            $capcha=Factory::M('Capcha');
            //验证非法
            if(!$capcha->checkCapcha($code)){
                $this->jump("index.php?p=back&c=Admin&a=show","验证码错误");
            }
            //去数据库验证数据有效性
            $model=Factory::M('AdminModel');
            if($row = $model->check($admin,$pwd)){     //如果合法我们应该把用户信息存放到session中
                @session_start();   //开启session机制
                $_SESSION['adminInfo']=$row;
                //更新登录信息
                $model->updata_login($row['id']);
               $this->jump("index.php?p=back&c=Index&a=index");
            }else{
                $this->jump("index.php?p=back&c=Admin&a=show","用户名或密码错误");
            }
        }
  • 相关阅读:
    HDU 4393 Throw nails(贪心加模拟,追及问题)
    【Add Two Numbers】
    【Single Num II】cpp
    【Single Number】cpp
    【Candy】cpp
    【Gas Station】cpp
    【Set Matrix Zeros】cpp
    【Gray Code】cpp
    【Climbing Stairs】cpp
    【Plus One】cpp
  • 原文地址:https://www.cnblogs.com/xiaowie/p/14388203.html
Copyright © 2020-2023  润新知