«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Достаточно ли `mysqli_real_escape_string ()`, чтобы предотвратить атаки впрыска SQL?

Достаточно ли `mysqli_real_escape_string ()`, чтобы предотвратить атаки впрыска SQL?

Опубликовано в 2025-02-11
Просматривать:613

Is `mysqli_real_escape_string()` Enough to Prevent SQL Injection Attacks?

IS MySQLI «mySQLI_REAL_ESCAPE_STRING" Достаточное против атак SQL?

] ваш код пытается защитить от инъекций SQL с использованием "mySQLI_Real_escape_escape_String ()". Однако, как указано URI2X, эта мера неадекватна.

уязвимость к SQL Inception

"mysqli_real_escape_string ()" Только уходит определенные символы, оставив ваш запрос уязвимый в SQL инъекционные атаки. Например, следующий код все еще может быть уязвимым:

$email = mysqli_real_escape_string($db_con, $_POST['email']);
$query = "SELECT * FROM users WHERE email = '" . $email . "'";

злоумышленник может ввести адрес электронной почты, например, «email'@example.com», чтобы использовать запрос, добавив дополнительные операторы SQL после сбежавшего ввода. Подготовленных утверждений

вместо "mysqli_real_escape_string ()", наиболее эффективный способ предотвращения инъекций SQL - это использование подготовленных утверждений. Подготовленные операторы Отдельные данные от строки запроса, предотвращая загрязнение данных. $ stmt-> bind_param ('ss', $ email, $ psw); $ email = mysqli_real_escape_string ($ db_con, $ _post ['email']); $ psw = mysqli_real_escape_string ($ db_con, $ _post ['psw']); $ stmt-> execute ();

строгого символов белого списка

$stmt = $db_con->prepare("INSERT INTO users (email, psw) VALUES (?, ?)");
$stmt->bind_param('ss', $email, $psw);
$email = mysqli_real_escape_string($db_con, $_POST['email']);
$psw = mysqli_real_escape_string($db_con, $_POST['psw']);
$stmt->execute();
в ситуациях, где подготовленные утверждения не осуществляются, реализация строгого белого символа может гарантировать безопасность. Это включает в себя фильтрацию ввода, чтобы убедиться, что он содержит только разрешенные символы.

Заключение

"mysqli_real_escape_string ()" только недостаточно для защиты от инъекций SQL. Подготовленные заявления и строгие белые списки обеспечивают более надежные гарантии от этих атак.

]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3