5. SQL Injection - внедрение SQL кода

Данный цикл статей посвящен основам языка SQL (Structured Query Language) и уязвимостям в базах данных (БД), использующих данный язык.

Современные веб-сайты широко используют базы данных для хранения различного рода данных. К ним относятся:

  • Тексты к статьям, которые отображаются в браузере. Текст, который вы читаете, также хранится в БД и извлекается из неё при возникновении определенного запроса.
  • Наименование, описание различных товаров и их цены. Это относятся к онлайн-магазинам.
  • Список пользователей и их пароли.

Это далеко не полный список хранимых данных.

Взаимодействие с SQL происходит следующим образом. С помощью параметров в запросах GET и POST пользователь передает определенный запрос к веб-приложению. Приложение формирует SQL запрос, в который вставляет значения, полученные в GET/POST запросах. Получив данные из БД, приложение отправляет их обратно пользователю в том виде, в котором запрашивал пользователь, например это может быть JSON, HTML и другие форматы.

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

Чтобы понять, как работают методы SQL Injection, прежде всего необходимо изучить синтаксис SQL запросов. В следующем уроке мы разберем основы SQL и научимся формировать запросы для взаимодействия с БД. Вы поймете, как извлекать, удалять и изменять информацию в базах данных.

Затем мы рассмотрим некоторые методы для взлома БД и попрактикуемся на уязвимых приложениях.