SQL-инъекция: что это такое?

(Ди Алессандро Руголо)
26/02/24

Сколько раз вы слышали о SQL-инъекциях и обещали себе понять, что это такое, но у вас не было на это времени или желания?

Если у вас есть три минуты, я попробую объяснить вам это по-простому.

Начнем с названия: SQLi, SQL Injection или полностью (в одной из возможных интерпретаций) «Внедрение языка структурированных запросов» это тип атаки на базу данных веб-приложения, заключающийся в выполнении вредоносного запроса. Для полноты добавлю, что SQL — это стандартный язык, используемый для взаимодействия с реляционной базой данных.

Но что это значит? Ты говоришь. 

Давайте рассмотрим практический пример. Представьте себе веб-страницу сайта онлайн-торговли, где обычно можно найти и выбрать товар для покупки. Часто в поле поиска можно вводить текстовые строки, содержащие символы или специальные символы. Ну, некоторые символы могут показаться нам безобидными, но это не относится к базе данных, которая интерпретирует их совершенно по-другому.

Что может случиться, если вы стали жертвой атаки SQLi?

К сожалению, всякое может случиться.

Если контроль над возможными запросами к базе данных неправильный (или, как мы все еще видим, отсутствует), возможно, что данные, содержащиеся в ней, будут изменены, удалены, скопированы или даже зашифрованы. Переместиться из базы данных в другие области системы несложно, поэтому злоумышленник, располагающий временем и минимумом ресурсов и знаний в области ИТ, действительно может нанести большой ущерб.

SQLi — одна из самых известных атак, которая работает и сегодня, в основном из-за плохого программирования веб-страниц, на которых, как уже упоминалось, не проводятся правильные проверки того, что пользователь сайта может ввести в качестве запроса.

Этот тип атаки был публично известен как минимум с 1998 года благодаря статье «Уязвимости веб-технологий NT» выпущен на Phrack пользователем Rain Forest Puppy, псевдонимом Джеффа Форристала, хакера и эксперта по мировой безопасности.

Для углубления:

- http://phrack.org/issues/54/8.html

- https://www.esecurityplanet.com/networks/how-was-sql-injection-discovered/

- https://owasp.org/www-community/attacks/SQL_Injection