我在 php 中编写了一个代码,可以让管理员登录。从表中获取密码信息。我知道编写这种代码不是一个好习惯,我应该使用准备好的语句或 mysqli_ 但我只想了解 sql 查询漏洞。我只想知道我的代码如何容易受到 SQL 注入的影响?如何绕过密码限制。我尝试在密码字段中输入密码 = 'anything' OR 'x'='x' 但它没有绕过它。这是我的代码:-
if(isset($_POST["Submit"]))
{
include 'db_connect.php';
$user=$_POST['user'];
$pass=$_POST['pass'];
$checkquery="select * from adminlogin where password='$pass' ";
$queryex= mysql_query($checkquery);
$row= mysql_fetch_array($queryex);
$checkcasepass = $row['password'];
if($user=='admin' && strcmp($checkcasepass,$pass)==0)
{
setcookie("admin",$user);
setcookie ("student", "", time() - 3600);
header("location: admin option.php");
}
else
{
echo "Sorry User Name and Password is Wrong";
}
}
出于测试目的,我将查询字符串更改为此:-
$checkquery="select * from adminlogin where password='$pass' OR 1=1 ";
但它没有用。可能是由于魔术引号吗?但我使用的是 PHP 5.4.3,魔术引号已经折旧。我想知道为什么 SQL 注入不起作用。?