У меня есть этот конкретный код (это mwe), и я не могу понять, почему не возникает ошибка MySQL при печати в файлах журналов браузера или apache:
$sql= "SELECT * from vulnDB where username = admin and password = '" . $_POST['password'] ."'";
if($result = mysqli_query($conn, $sql)) {
$row = mysqli_fetch_assoc($result);
if ($_POST['password'] == $row['password']) {
echo "Welcome!";
} else {
echo "This password is incorrect";
}
} else {
echo "Error";
}
Когда я ввожу допустимые значения,код выполняется правильно (Welcome
или This password is incorrect
), когда я ввожу "
или '
, я достигаю условия Error
, но ничего не печатается, и этот код кажется невосприимчивым к SQLi.
Есть ли какая-то особая защита в PHP, чтобы в любом случае избежать внедрения SQLi?Надлежащая защита будет заключаться в использовании PDO, но я нашел этот код, который, очевидно, кажется уязвимым;и не может вызвать синтаксис ошибки sqli или другие мысли о нем, выводится только «ошибка».