我没有转义要插入到查询中的字符串,所以我不明白是什么阻止了我在向用户名输入框中插入:username或1=1时获取所有用户ID。当我将1=1硬编码到原始查询中时,工作起来就像一个符咒。
我在服务器上没有任何其他可能导致这种情况的东西,我只有一个index.php和下面的代码。
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = 'SELECT ID FROM users WHERE username = "'.$_POST["username"].'"';
$result = mysqli_query($conn, $sql);
print_r($result);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["ID"];
print_r($row);
}
} else {
echo "0 results";
}
?>
<form method='POST' action='#'>
username <input type'text' name='username'></input>
<br>
password <input type'text' name='password'></input>
<input type='submit'>
</form>
<?php