SQL-инъекция
Техника внедрения кода, которая эксплуатирует уязвимости безопасности в слое базы данных приложения путём вставки вредоносных SQL-выражений в поля ввода.
Определение
SQL-инъекция (SQLi) происходит, когда пользовательский ввод неправильно фильтруется или не имеет строгой типизации и неожиданно выполняется как часть SQL-команды. Атакующие могут использовать SQLi для обхода аутентификации, доступа или модификации данных, выполнения административных операций и даже захвата контроля над сервером БД. Это одна из самых распространённых и опасных веб-уязвимостей, #3 в OWASP Top 10.
Почему это важно
SQL-инъекция была причиной крупных утечек данных, затронувших миллионы пользователей. Утечка Equifax 2017 года раскрыла 147 миллионов записей из-за связанной уязвимости. Предотвращение требует параметризованных запросов, валидации ввода и инструментов вроде diffray, обнаруживающих паттерны SQLi.
Пример
Форма логина конкатенирует ввод пользователя напрямую в SQL: "SELECT * FROM users WHERE username='" + input + "'". Атакующий вводит "' OR '1'='1" для обхода аутентификации.