Проверяет понимание SQL-инъекций как одной из самых распространённых уязвимостей веб-приложений и способов защиты от них.
SQL-инъекция возникает, когда приложение формирует SQL-запрос путём конкатенации строк с данными, пришедшими от пользователя. База данных не отличает «данные» от «кода», поэтому вставленный фрагмент SQL выполняется как часть запроса. Это позволяет обойти аутентификацию, выгрузить чужие данные или полностью разрушить таблицы.
Классический пример — форма логина, где запрос собирается так:
SELECT * FROM users
WHERE login = 'admin' AND password = '123';Если пользователь введёт в поле пароля строку ' OR '1'='1, запрос превратится в:
SELECT * FROM users
WHERE login = 'admin' AND password = '' OR '1'='1';Условие '1'='1' всегда истинно, и вход выполнится без знания пароля.
UNION SELECT.Последствия: утечка персональных данных, обход авторизации, изменение или удаление записей, иногда выполнение команд на сервере.
Пример безопасного кода на Node.js с параметрами:
const sql = 'SELECT * FROM users WHERE login = ? AND password = ?';
db.query(sql, [login, password], (err, rows) => {
// значения передаются отдельно от SQL-кода
});Итог: SQL-инъекция — критичная уязвимость, которую нужно закрывать на уровне архитектуры доступа к данным. Параметризованные запросы и минимальные права БД делают атаку невозможной в большинстве сценариев.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию