Ответ
SQL-инъекция — это тип атаки, позволяющий злоумышленнику выполнять произвольные SQL-запросы в базе данных приложения. Это одна из самых опасных веб-уязвимостей, которая может привести к:
-
Хищению данных: Чтение конфиденциальной информации из любых таблиц, к которым имеет доступ приложение (данные пользователей, финансовая информация).
-- Пример: получение всех пользователей вместо одного SELECT * FROM users WHERE login = 'admin' OR '1'='1';
-
Модификации или удалению данных: Изменение, добавление или полное уничтожение информации в базе данных.
-- Пример: удаление таблицы пользователей после выполнения основного запроса SELECT * FROM products WHERE id = 1; DROP TABLE users; --
-
Обходу аутентификации: Получение несанкционированного доступа к системе без знания логина и пароля.
-- Пример: вход под первым пользователем в таблице SELECT * FROM users WHERE login = '' OR 1=1 --' AND password = '...';
-
Выполнению команд на сервере: В некоторых СУБД (например, PostgreSQL, Microsoft SQL Server) при наличии соответствующих прав можно выполнять команды операционной системы, что ведет к полному захвату сервера.
Основной метод защиты — использование параметризованных запросов (prepared statements) или ORM, которые разделяют код запроса и данные, не позволяя пользовательскому вводу влиять на логику SQL-запроса.