Выбор ответа Junior Инъекции: SQL, NoSQL, команды спрашивают часто обновлено
Почему параметризация защищает от SQL-инъекции
Вопрос
Почему параметризованный запрос защищает от SQL-инъекции?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Запрос и значения идут в базу раздельно, значение не разбирается как SQL. При подготовленном запросе СУБД сначала разбирает структуру запроса с плейсхолдерами, а значения подставляет как данные.
Варианты ответа
- Драйвер автоматически удаляет из значений кавычки и точки с запятой
- База шифрует параметры перед выполнением, и их нельзя прочитать как SQL
- Параметры проверяются регулярным выражением на опасные слова вроде DROP
- Запрос и значения идут в базу раздельно, значение не разбирается как SQLправильный ответ
Разбор
При подготовленном запросе СУБД сначала разбирает структуру запроса с плейсхолдерами, а значения подставляет как данные. Поэтому ' OR '1'='1 останется просто строкой. Удаление кавычек и чёрные списки слов это хрупкие фильтры, а шифрование тут ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.