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;
即在数据库中进行查找,如果有email与password匹配的,则登陆成功。
但是,假如用户提交如下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);
抛砖引玉,继续盖楼吧!
