使用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 "登陆信息错误";
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值