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

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

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

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

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

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

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

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

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

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

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

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

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

Узнать больше →

Информационная безопасность — очень важное направление в информационных технологиях. В современном мире достаточно много угроз лежит именно в сфере обеспечения безопасности данных.

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

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

Узнать больше →

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

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

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

Узнать больше →

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

Cтатьи по теме:

MySQL — система управления базами данных
MySQL — это реляционная система управления базами данных с открытым исходным кодом. В настоящее время эта СУБД одна из наиболее популярных в веб-приложениях — подавляющее большинство CMS использует именно MySQL (часто только её, без альтернатив), а почти все веб-фреймворки поддерживают MySQL уже на уровне базовой конфигурации (без дополнительных модулей).
MariaDB — система управления реляционными базами данных
MariaDB — ответвление реляционной СУБД MySQL, разрабатываемое сообществом под лицензией GPL. MariaDB полностью совместима с приложениями, использующими MySQL, а переход на эту СУБД оправдан тем, что MySQL уже не так активно развивается.
PostgreSQL — свободная объектно-реляционная система управления базами данных
PostgreSQL — это популярная свободная объектно-реляционная система управления базами данных. PostgreSQL отличается высокой надёжность, базируется на языке SQL и имеет широкие возможности.
Ускоряем работу сайта: используем Redis для кеширования и хранения данных
Redis — сетевое журналируемое хранилище данных типа «ключ — значение», которое обрабатывает данные в оперативной памяти и обладает механизмами снимков и журналирования для обеспечения постоянного хранения. Хранилище поддерживает работу с пятью типами данных: со строками, списками, хешами, обычными и сортируемыми множествами.
Ускоряем работу сайта при помощи кеширования на базе Memcached
Memcached — это хранилище «ключ => значение», использование которого очень эффективно для ускорения работы сайта или веб-приложения.
Реляционные базы данных и NoSQL-хранилища
13.03.2019  |  Статьи  —  СУБД  /  хранение данных  /  SQL  /  NoSQL  /  серверное ПО
Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных.
Масштабирование баз данных — партиционирование, репликация и шардинг
СУБД — это очень часто «узкое место» в производительности веб-приложений. В момент, когда сервер баз данных не может справится с нагрузками, производится масштабирование. Рассмотрим основные способы увеличения производительности СУБД.

Тематические технологии:

PostgreSQL — объектно-реляционная СУБД
Поисковая система ElasticSearch
СУБД Redis
Колоночная СУБД Scylla
Колоночная СУБД Cassandra