Так можно ли обойти mysqli_real_escape_string?

Привет.
Говорят, каждый тру гуру PHP обязан как минимум 1 раз стебануть кого-нибудь на форуме по поводу применения данной функции. Но ведь ее применения достаточно, чтобы не пропустить инъекцию. Да понятно, что она не для защиты! Но не припоминаю, чтобы видел хоть один пример обратного. Или можно ее обойти не используя двойные кавычки?
$user = mysqli_query($link,'select * from users where user_name = "'.mysqli_real_escape_string($link,$user_name).'"');


P.S. подготавливаемые запросы - крута, безусловно, но просьба именно по существу вопроса.
  • Вопрос задан
  • 751 просмотр
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
$id    = "1; DROP TABLE users;"
$id    = mysqli_real_escape_string($link, $id);
$query = "SELECT * FROM users where id = $id";

свободен

Судя по числу подписчиков, этот вечнозеленый вопрос все ещё будоражит некорепшие умы.
И надо в который раз повторить очевидную вещь: вопрос сам по себе изначально некорректный.
Поскольку функция mysqli_real_escape_string Не имеет. Никакого. Отношения. К SQL инъекциям. То, что эта функция предназначена для защиты от инъекций - самое древнее и заскорузлое суеверие хомячков от похепе.
На самом деле это функция для форматирования строк. К инъекциям отношения не имеет и применяться для защиты не должна.
Для защиты служат подготовленные выражения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы