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

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

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

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

Что такое SQL-инъекции и как они работают?

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

Примерами могут быть:

  • Сайты электронной коммерции, которые заполняют продуктов на основе поискового запроса
  • Членство сайты, которые запрашивают логин и пароль
  • Обзор сайтов, которые позволяют пользователю-представленный контент

Когда сервер получает эти данные (поиск товара, например), то это означает вступление в простой SQL-запрос для извлечения и отображения данных.

В других случаях это может создать запрос для проверки входных данных из таблицы (такие как имя пользователя и пароль) или добавить данные в таблицу для хранения (как новый пользователь обзор на продукт).

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

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

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

Если их усилия не мешает, хакер может, за несколько простых шагов:

  • Определить, если база данных имеет уязвимость
  • Узнайте имена различных таблиц данных, хранящихся в базе данных
  • Найти имена отдельных столбцов данных в данной таблице (имя пользователя, пароль, номер кредитной карты и т. д.)
  • Удалять, изменять, или показать, что конфиденциальные данные
Nod32 лучше?  Интервью С Андреем Мешковым – Адгуард

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

(Вордпресс, например, что полномочия около 30% всей сети, постоянно латание уязвимостей с каждой новой версией.)

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

Типы SQL-инъекций

Pexels

Есть несколько различных форм этого вида атаки может занять.

Вот основные из них, чтобы быть в курсе:

В группу SQL-инъекции

Это самая простая и наиболее распространенная форма атаки SQLi, и обычно выглядит как приведенные выше примеры.

Во время группы атаки, хакеры смогут увидеть результаты своих построенных запросов на том же экране, как и их ввод. (Например, на продукт, поиск по странице.)

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

Слепой SQL-инъекции

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

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

В слепой SQL-инъекции, хакер может узнать:

  • Если система уязвима
  • Какая версия базы данных MySQL работает
  • И больше

Они могут использовать эту информацию для построения вредные запросы.

Внеполосное SQL-инъекции

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

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

Nod32 лучше?  Как отключить Смарт Скрин

Как предотвратить атаки путем внедрения кода SQL

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

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

(Даже маленькая уязвимость в третьей части WordPress плагин может обойти вордпресс на защиту.)

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

Выполните Частые Обновления

Если вы используете популярную систему управления контентом или платформы сайта, часто обновлять его. Но также не забудьте обновить версии PHP, MySQL и все остальное, что может подключиться к вашей базе данных.

Ограничить & Санировать Входы

Хорошие поля для ввода не будет работать запрос, если входная конкретно соответствует требованиям, которые вы установили. Это называется ограничение ваших входов.

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

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

Хранение конфиденциальных данных надежно (хэширования паролей и многое другое)

Psyomjesus [куб. см К-Са 4.0]

Ваша база данных никогда не следует хранить пароли пользователей в виде обычного текста.

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

Номера кредитных карт также должны быть зашифрованы или размечается с помощью вашей платежной системы.

Не в состоянии надежно хранить конфиденциальные данные могут стать преступлением в некоторых случаях.

Подготовленные заявления, параметризованные запросы и PHP объекты данных

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

Nod32 лучше?  Интервью С Вальтером Beisheim – НОК НОК

В подготовленном заявлении или параметризованного запроса, это немного похоже на предварительно выполнив запрос с данными подстановки в поле ввода, так что сервер знает, какая команда будет ожидать. Тогда запрос не может быть изменена за пределами входных переменных (поэтому запрос SELECT не могут быть изменены или добавлены к падению или другие команды).

Более новые версии PHP позволяют установить данных, вводимых пользователем как объекты данных PHP, или ЗПР. Это чрезвычайно простой способ гарантировать, что сервер считывает любого пользователя ввода только как данные и не выполняет никаких команд, которые могут быть частью входных данных.

Не отображать определенные сообщения об ошибках для пользователей

Хакеры могут поблескивать много информации от ошибок, которые в результате неудачных запросов.

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

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

Использовать сканер для обнаружения уязвимостей в SQL

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

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

Лучше знать сейчас и решить проблему, то узнать слишком поздно!

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

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

Защита сравнительно проста в реализации, но одна ошибка может иметь катастрофические последствия для вашего бизнеса, клиентов или на сайте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *