SQL-инъекция

Опубликовано: 11 Августа, 2021

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

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


Использование SQL-инъекций в веб-приложениях

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

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

И ученик вводит в поле ввода следующее:
12222345 или 1 = 1 .

Таким образом, это в основном означает:

 ВЫБРАТЬ * от СТУДЕНТА, где 
ID СТУДЕНТА == 12222345 или 1 = 1

Теперь это 1 = 1 вернет все записи, для которых это верно. Таким образом, все данные о студентах скомпрометированы. Теперь злоумышленник может аналогичным образом удалить записи о студентах.

Рассмотрим следующий SQL-запрос.

 ВЫБРАТЬ * от ПОЛЬЗОВАТЕЛЯ, где 
ИМЯ ПОЛЬЗОВАТЕЛЯ = "" и ПАРОЛЬ = ""

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

 Выберите * от пользователя, где 
(Имя пользователя = «» или 1 = 1) И 
(Пароль = ”” или 1 = 1).

Поскольку 1 = 1 всегда верно, данные пользователя скомпрометированы.

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

Предотвращение внедрения SQL

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

Базовое внедрение SQL-кода и смягчение его последствий с примером