SQL-инъекция
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-кода и смягчение его последствий с примером