因此,对于一个学校项目,我必须制作一个带有登录系统的网站。它有一个用户名和密码字段,以及一个提交按钮。它将用户名和密码与 MySQL 数据库中的用户名和密码进行比较。如果该组合在数据库中,则用户可以继续,否则他们将被重定向到登录页面。我为我的数据库连接使用准备好的 PDO 语句。
现在我的老师要我通过对登录系统执行sql攻击来测试安全性。不幸的是,我不知道在这些盒子里放什么,结果会是什么。例如,我尝试在将返回 true 的用户名和密码字段中输入值,如下所示:
1==1, 1===1, 0 is null
但我不知道我是否成功了,也不知道攻击者是否可以通过这些语句访问或截断我的数据库。
html代码:
<form method="post" action="includes/login.php">
<input type="text" name="gebruikersnaam" >
<input type="password" name="wachtwoord" >
<input type="submit" value="login">
</form>
php认证:
$myusername=$_POST['gebruikersnaam'];
$mypassword=$_POST['wachtwoord'];
$sql="SELECT * FROM leerling WHERE leerlingnummer='$myusername' and wachtwoord='$mypassword'";
$sql2="SELECT * FROM lop WHERE gebruikersnaam='$myusername' and wachtwoord='$mypassword'";
$statement2=$conn->prepare($sql2);
$statement2->execute();
$count2=$statement2->rowcount();
if($count2==1){proceed}
$statement = $conn->prepare($sql);
$statement->execute();
$count= $statement->rowcount();
if($count==1){proceed}
else {deny access}