SQL-инъекции — распространённый метод взлома веб‑приложений и сайтов

SQL‑инъекции — это один из очень распространённых способов взлома сайтов и веб‑приложений, работающих с реляционными базами данных.

Этот способ основан на внедрении в выполняемый приложением запрос к базе данных произвольного SQL‑кода, переданного злоумышленником. SQL‑инъекции являются одной из разновидностей атак типа «инъекция кода».

SQL‑инъекции, в зависимости от типа уязвимости, может дать возможность атакующему выполнить произвольный запрос к базе данных. То есть атакующий сможет прочитать содержимое любых таблиц, удалить, изменить или добавить данные, а также есть вероятность получения возможности работы с локальными файлами и выполнения произвольных команд на атакуемом сервере.

Последствия SQL‑инъекций:

  • Кража данных
  • Модификация данных
  • Удаление данных
  • Полный взлом системы

Атаки типа внедрения SQL становятся возможными из‑за некорректной обработки приложением входных данных. Разработчики сайтов и приложений, работающих с реляционными базами данных, должны знать о таких уязвимостях и принимать меры противодействия.

С точки зрения безопасности сайта или веб‑приложения, наиболее правильной является фильтрация всех полученных данных (приложение в принципе не должно принимать в обработку те параметры, которые непонятно зачем были переданы) и продуманная обработка тех параметров, которые используются для построения запроса к базе данных.

Для предотвращения SQL‑инъекций основными направлениями обработки входных данных должны являться:

  • экранирование специальных символов в полученных строковых параметрах (универсальный способ)
  • приведение полученных данных к ожидаемому приложением типу (отлично работает на булевом типе и на числах)
  • нормализация и очистка полученных параметров регулярными выражениями (похоже на приведение к типу, но работает для более комплексных параметров)
  • валидация полученных параметров по справочникам (часто перечень ожидаемых параметров известен и ограничен)
  • усечение полученных параметров (длина инъекций, как правило, достаточно велика)
  • использование параметризованных запросов (запрос передаётся отдельно от параметров, параметры в этом случае экранируются автоматически)
  • правильное использование клиентских библиотек и возможностей ORM (библиотеки для работы с СУБД и ORM обычно хорошо документируют правильное с точки зрения безопасности их использование)
  • фильтрация по ключевым словам и последующий бан атакующего (мера, позволяющая усложнить сканирование на уязвимости)

Тематические статьи

Информационная безопасность: основные подходы, оценка рисков и затрат

Информационная безопасность — обеспечение конфиденциальности, целостности и доступности информации.

Конфиденциальность — обеспечение исключительно авторизованного доступа к информации: информация не должна предоставляться и не должна раскрываться неавторизованным физическим лицам, организациям или процессам. Целостность — поддержание и обеспечение точности и полноты данных на протяжении всего жизненного цикла: данные не должны быть изменены неавторизованным или незаметным способом. Доступность — обеспечение беспрепятственного доступа к информации авторизованным пользователям: системы хранения и обработки информации, интерфейсы работы с информацией, системы обеспечения авторизованного доступа и каналы связи должны функционировать корректно.

информационная безопасность
веб-разработка
системное администрирование
Статья опубликована в 2020 и обновлена в 2023 году

MySQL — система управления базами данных

MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб‑приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб‑фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).

СУБД
хранение данных
бэкенд
SQL
веб-разработка
серверное ПО
Статья опубликована в 2014 году

PostgreSQL — система управления базами данных

PostgreSQL — это популярная свободная объектно‑реляционная система управления базами данных. PostgreSQL базируется на языке SQL, отличается высокой надёжность и имеет широкие возможности.

В PostgreSQL нет ограничений на максимальный размер базы данных, количество записей и индексов таблицах. В СУБД встроены мощные и надёжные механизмы транзакций и репликации. Также СУБД отличает легкая расширяемость и возможность онкой настройки.

СУБД
хранение данных
бэкенд
PostgreSQL
SQL
веб-разработка
серверное ПО
Статья опубликована в 2019 и обновлена в 2020 году

MariaDB — система управления реляционными базами данных

MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.

СУБД
хранение данных
бэкенд
SQL
веб-разработка
серверное ПО
Статья опубликована в 2014 году

Реляционные базы данных и NoSQL‑хранилища

Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных.

Реляционные системы управления базами данных (SQL) хранят данные в табличных структурах и чаще всего используются в качестве основного хранилища для веб‑приложений. Они очень стабильны и их надёжность проверена временем. Нереляционные СУБД (NoSQL) заметно моложе реляционных баз данных, а также заметно от них отличаются по структуре хранения данных и работе с ними. Большинство нереляционных хранилищ превосходят классические SQL СУБД по скорости доступа или при работе со специфическими типами данных, но обычно эта скорость достигается за счёт снижения надёжности хранения. На практике NoSQL‑решения обычно применяются не для хранения всех данных приложения, а для решения специфических задач — для кэширования, хранения логов, управления очередями, для распределённого хранения данных, ускорения поиска и фильтрации.

хранение данных
SQL
NoSQL
СУБД
серверное ПО
Статья опубликована в 2019 году

Информационная безопасность — основные угрозы

В статье мы рассмотрим мотивацию атакующих и проведем их классификацию. Также классифицируем основные методы атак, оценим их риски и возможные последствия.

К сожалению, от атак не застрахован ни один веб‑проект. Даже если ваш сайт ничем не интересен профессиональным хакерам (реальных денег нет, данных мало и они не ценные), если проект не вызывает яркие негативные эмоции у кого‑либо, а монетизация возможной атаки ничтожна по прибыльности, то всё это это лишь снижает риски и всё равно проекту не избежать автоматизированных атак с целью захвата вычислительных ресурсов или для перенаправления трафика.

информационная безопасность
веб-разработка
системное администрирование
Статья опубликована в 2020 и обновлена в 2022 году

Процессы, необходимые для информационной безопасности

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

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

информационная безопасность
веб-разработка
тестирование
системное администрирование
Статья опубликована в 2020 и обновлена в 2023 году

Системы предотвращения вторжений (IPS)

В современном цифровом мире кибербезопасность стала неотъемлемой частью каждой организации. В этой статье мы разберём типы и принцип работы систем предотвращения вторжений (Intrusion Prevention Systems, IPS).

информационная безопасность
корпоративные информационные системы
Статья опубликована в 2023 году

Системы обнаружения вторжений (IDS)

В эпоху цифровизации и высокого уровня угроз в сфере информационной безопасности крайне важно иметь надежные инструменты для защиты корпоративных информационных систем. Одним из таких механизмов, которому на протяжении многих лет уделяется значительное внимание, являются системы обнаружения вторжений (Intrusion Detection Systems, IDS).

информационная безопасность
корпоративные информационные системы
Статья опубликована в 2023 году