Задать вопрос

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽