聘我网

新概念招聘3.0

SQL注入攻防实战

vote up0vote downstar

SQL注入是黑客入侵的重要手段之一,这里献上其中一技,也是最初级的。

当登陆时,后台往往有类似下面的过程:

$query = "select id from accounts where email='$_POST[email]' and psw='$_POST[password]'";
$result = mysql_query($query,$con);
if($row = mysql_fetch_assoc($result))
    return true;
else
    return false;

即在数据库中进行查找,如果有emailpassword匹配的,则登陆成功。

但是,假如用户提交如下password

1' or '1'='1

里面的那句查询将变成:

select id from accounts where email='$_POST[email]' and psw='1' or '1'='1'

注意where后面跟了or '1'='1'这个恒成立,所以,不管email是什么,都会判定为登陆成功!

解决方法很简单:

$_POST['email'],$_POST['password']进行转义即可:

$_POST['email'] = mysql_real_escape_string($_POST['email'],$con);
$_POST['password'] = mysql_real_escape_string($_POST['password'],$con);

抛砖引玉,继续盖楼吧!

 

1 个答复

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.