Проверяет понимание методов защиты от SQL-инъекций, критически важных для безопасности веб-приложений.
SQL-инъекция — это атака, при которой злоумышленник внедряет вредоносный SQL-код в запрос, изменяя его логику. Это происходит, когда пользовательский ввод напрямую вставляется в строку запроса. Например, если вы пишете SELECT * FROM users WHERE name = '" + userInput + "', злоумышленник может передать ' OR '1'='1, что вернет все записи.
Главный способ — параметризованные запросы (prepared statements). Они передают данные отдельно от SQL-кода, и база данных интерпретирует их как значения, а не как команды. Это работает в большинстве языков и фреймворков.
// Пример на Node.js с использованием mysql2
const query = 'SELECT * FROM users WHERE name = ?';
connection.execute(query, [userInput], (err, results) => {
// обработка результатов
});Дополнительно используйте валидацию ввода (проверка типов, длины, формата) и санитизацию (экранирование спецсимволов). Однако санитизация менее надежна, чем параметризация, и не должна быть единственной мерой.
Параметризованные запросы — обязательный стандарт для любого приложения, работающего с БД. Они просты в использовании и полностью устраняют риск классических SQL-инъекций. Валидация и ограничение прав — дополнительные слои защиты, которые стоит применять всегда.