使用PDO防御sql注入

使用转移函数或者黑名单都还是有一定的风险,防御sql注入比较好的办法还是pdo,pdo不会将用户输入与sql语句拼接,从原理上防御了sql注入

//pdo防御sql注入
//某登陆页面部分代码
    $dbh = new PDO("mysql:host=localhost;dbname=user;charset=utf8","root","root");//实例化pdo对象
    //php5.3.6及以前版本中,并不支持在DSN中的charset定义,而应该使用set names ...
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);//禁止PHP本地转义而交由MySQL Server转义
    $sql = "select * from admin where admin=? and password=?";
    $stmt = $dbh->prepare($sql);//对请求mysql的sql语句用占位符的方式做预处理。该sql传入prepare函数后,预处理函数就会得到本次查询语句的sql模板类,并将这个模板类返回。
    $stmt->bindParam(1,$_html['admin']);//绑定查询参数
    $stmt->bindParam(2,$_html['password']);
    $stmt->execute();//执行语句
    $result = $stmt->fetchAll();//返回包含所有结果集行的数组
    if(!!$result){
       setcookie('login',md5($_rows['admin']));
       $_SESSION['user']=md5($_rows['admin']);
       header('location:index.php');
 }else{
  echo "登陆信息错误";
 }
发布了27 篇原创文章 · 获赞 8 · 访问量 8267

猜你喜欢

转载自blog.csdn.net/weixin_41652128/article/details/90238609