🗄️ SQL и базы данных  ·  20 вопросов  ·  ~38 мин  ·  ⏱ Таймер 38:00  ·  Средний  · 

SQL-инъекции и безопасные запросы

Задания разбирают не страшилки, а точные границы защиты: параметры отделяют значение от SQL-кода, но не подставляют имена столбцов; экранирование вручную ломается на кодировках и контексте; динамический ORDER BY строится через белый список; хранимая процедура безопасна лишь пока внутри неё не склеивается непроверенный SQL. Отдельно проверяются последствия чрезмерных прав.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 38 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Где возникает инъекция в этом коде?
SQL
sql = "SELECT * FROM users WHERE name = '" + user_input + "'"
Вопрос 2 из 20
Почему ввод ' OR '1'='1 способен изменить смысл уязвимого WHERE?
SQL
SELECT * FROM users WHERE name = '' OR '1'='1';
Вопрос 3 из 20
Возможна ли инъекция в числовой параметр без кавычек?
SQL
sql = "SELECT * FROM orders WHERE id = " + request.query.id
Вопрос 4 из 20
Что такое слепая SQL-инъекция?
Вопрос 5 из 20
Почему сохранённая в базе строка может вызвать вторичную инъекцию позже?
Вопрос 6 из 20
Как правильно передать email?
Вопрос 7 из 20
Почему ручная замена одинарной кавычки не является хорошей заменой параметрам?
Вопрос 8 из 20
Можно ли одним параметром $1 подставить имя столбца в ORDER BY?
SQL
SELECT * FROM products ORDER BY $1;
Вопрос 9 из 20
Как безопасно передать список идентификаторов в PostgreSQL?
Вопрос 10 из 20
Почему prepared statement безопасен только при корректном связывании значений?
SQL
sql = "SELECT * FROM logs WHERE level=$1 ORDER BY " + user_sort
Вопрос 11 из 20
Как безопасно реализовать sort=price или sort=name?
SQL
sort_sql = {'price': 'price ASC', 'name': 'name ASC'}[user_sort]
Вопрос 12 из 20
Как поступить с направлением сортировки asc/desc?
SQL
direction = 'DESC' if requested == 'desc' else 'ASC'
Вопрос 13 из 20
Что безопаснее при динамическом имени таблицы в административной функции PostgreSQL?
SQL
EXECUTE format('ANALYZE %I', allowed_table);
Вопрос 14 из 20
Почему хранимая процедура не гарантирует защиту от инъекции?
SQL
EXECUTE 'SELECT * FROM users WHERE name = ''' || p_name || '''';
Вопрос 15 из 20
Как безопасно добавить необязательный фильтр status?
Вопрос 16 из 20
Почему минимальные права уменьшают ущерб даже при найденной инъекции?
Вопрос 17 из 20
Стоит ли показывать пользователю полный текст ошибки базы?
Вопрос 18 из 20
Заменяет ли WAF параметризованные запросы?
Вопрос 19 из 20
Какой автоматический тест полезен для обработчика поиска?
SQL
search("O'Reilly")
search("%' OR 1=1 --")
Вопрос 20 из 20
Что ещё проверить после замены конкатенации на параметры?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу