Так можно ли обойти 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. подготавливаемые запросы - крута, безусловно, но просьба именно по существу вопроса.
  • Вопрос задан
  • 714 просмотров
Пригласить эксперта
Ответы на вопрос 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 инъекциям. То, что эта функция предназначена для защиты от инъекций - самое древнее и заскорузлое суеверие хомячков от похепе.
На самом деле это функция для форматирования строк. К инъекциям отношения не имеет и применяться для защиты не должна.
Для защиты служат подготовленные выражения.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 18:59
2500 руб./за проект
03 мая 2024, в 18:52
15000 руб./за проект