Сколько раз вы слышали о 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/