Что такое внедрение SQL?

SQL-инъекция — это разновидность инъекционной атаки. Инъекционные атаки происходят, когда злоумышленник передаёт злоумышленнику созданные входные данные, в результате чего приложение выполняет непреднамеренное действие 😲 Из-за повсеместного распространения баз данных SQL SQL-инъекция является одним из наиболее распространенных типов атак в интернете.
Эта инъекция позволяет злоумышленнику изменять SQL-запросы, выполняемые к базе данных. Это может быть использовано для извлечения некоторых конфиденциальных сведений, таких как структура базы данных, таблицы, столбцы и лежащие в их основе данные 😰
Какие бывают SQL-инъекции?
☠️ Инъекция на основе ошибок
Этот тип SQL-инъекции опирается на сообщения об ошибках, выдаваемых сервером базы данных, которые могут предоставить полезную информацию относительно структуры базы данных.
☠️ Инъекция на основе объединения
Этот метод позволяет злоумышленнику извлекать информацию из других таблиц, добавляя результаты к исходному запросу, сделанному в базу данных.
☠️ Классическая SQL-инъекция
В этом методе хакер использует результаты из базы данных и взламывает базу данных, чтобы добиться цели. Её также называется внутриполосной инъекцией SQL.
☠️ Инференциальная SQL-инъекция
Это один из самых опасных типов SQL-инъекций. Здесь хакеры не используют полосу для получения данных из базы данных. Они могут изменить структуру базы данных, наблюдая за её моделями.
☠️ Внеполосная инъекция
Это не очень распространённый тип SQL-инъекции, поскольку он зависит от функций, включённых на сервере баз данных. Он полагается на возможности сервера баз данных, чтобы сделать веб-запрос и отправить данные злоумышленнику.
Как мы можем обезопасить свои сайты?
🏥 Никогда не создавайте запрос непосредственно с помощью входных данных пользователя. Вместо этого используйте параметризованные операторы. Они следят за тем, чтобы входные данные, передаваемые в SQL-запросы, обрабатывались безопасно.
🏥 Всегда хорошо санировать пользовательский ввод. Кроме того, правильная проверка ввода должна быть сделана, например, имя не может быть написано цифрами или телефонный номер не может быть написан алфавитом. Однако иногда это можно обойти.
🏥 Используйте безопасный драйвер для взаимодействия с базой данных SQL. Они автоматически предотвращают все атаки SQL-инъекций. Например, SQLAlchemy для Python.