使用php链接数据库删除表信息[例02]-附上文

  • 1,438

地址栏来一个 id=83 or 1
/*
根据$sql拼接的结果
$sql = 'delete from stu where id=83 or 1'

1恒为真,因为所有的行,都满足条件,都被删除了.
这是一个非常简单的sql注入的例子.

怎么避免?

答:大原则,永远不要相信从客户处传来的数据

//如果是合法的id,应该是整行值才对,不应该是字符串
$id=isset($_GET['id'])?$_GET['id']+0:0;
//字符串+0,变成整型了,就不会再有注入的功能了.

详例:

    <?php
    //链接
    $conn=mysql_connect('localhost','root','12345678');
    if($conn){
        print_r($conn);
    }else{
        exit;
    }
    //选库
    $sql="use test";
    //发送sql进行查询
    $rs=mysql_query($sql,$conn);//沿着conn通道进行查询
    //sql字符集设置成utf8
    $sql="set names utf8";
    mysql_query($sql,$conn);
    //如果是合法的id,应该是整行值才对,不应该是字符串
    //接收地址栏的id,传几号id,就删几号会员
    $id=isset($_GET['id'])?$_GET['id']+0:0;
    //字符串+0,变成整型了,就不会再有注入的功能了.
    //形成删除用的sql语句
    $sql='delete from stu where id='.$id;
    //发送查询
    if(mysql_query($sql,$conn)){
        echo "删除成功";
    }else{
        echo "删除失败";
    }
    ?>

 

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年7月22日15:59:10
  • 转载请务必保留本文链接:https://www.150643.com/286.html
匿名

发表评论

匿名网友 填写信息