Передача подложных команд SQL


Большинство Web-приложений содержат связь со вспомогательной базой данных, которая использует Structured Query Language (SQL). Обмениваясь информацией с пользователем, Web-приложения обращаются к вспомогательным базам данных для поиска необходимых сведений или для обновления некоторых полей.

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

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

Затем атакующий поэкспериментирует, добавляя в запись символы кавычек (",' и т.п.) и разделители команд (;), проверяя реакцию системы. Во многих базах данных цитатные символы служат для отделения величин, вводимых в строку SQL. Здесь применим метод проб и ошибок, поскольку каждое Web-приложение формирует запрос для вспомогательной базы данных единственным образом.

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


Способы защиты против подложных SQL-команд



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

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

Еще советуем:
  • Безопасность компьютера: взлом паролей
  • Защита сайта от взлома паролей
  • Что такое переполнение буфера памяти
  • Защита от переполнения буфера памяти
  • Стековая память: как защитить ее от переполнения