• Категории
  • Подписка
  • Разместить статью
16/10/11 1 3896 Использование SQL-инъекций   
-

Советы по избеганию SQL внедрения

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

Правильная обработка ошибок

Никогда нельзя позволять приложению отсылать пользователю сообщения об ошибках ме­ханизма ODBC или любых других ошибках. Используйте генерацию страниц, описывающих причину ошибки, но ни в коем случае не предоставляйте пользователю системную информа­цию, имена переменных или другие данные. В языке Java, например, для обработки ошибок очень удобным будет использование методов try, catch, finally.

Список параметров

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

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

Хранимые процедуры

Хотя и нельзя утверждать со 100 %-ной уверенностью, но хранимые процедуры, которые были определены пользователем, менее подвержены опасности взлома с использова­нием внедрения SQL. Они требуют строго определенного количества параметров, в строго определенной последовательности и в строго определенном формате. Эти жесткие требова­ния значительно уменьшают риск взлома данной процедуры. Кроме того, использование хранимых процедур повышает не только уровень безопасности приложения, но также улуч­шает его характеристики при использовании!

Выполнение с минимальными привилегиями

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

Защита схемы

Имена таблиц, имена столбцов и SQL-структуры не должны размещаться в HTML-тексте. Часто встречаются страницы, на которых разработчики помещают объявление всей таблицы между HTML-дескрипторами комментария. Конечно же, эти действия облегчают понимание страниц, однако комментарии все же лучше помещать между ASP-дескрипторами комментария (ASP.NET), которые может просматривать только разработчик, чтобы пользователь не имел к ним доступа.

Методика внедрения SQL-инструкций:

  1. Для проверки приложения на наличие проверки вводимых данных необходимо созда­вать условия, при которых на странице происходят ошибки.
  2. Продолжайте вводить недопустимые данные, пока не определите всю структуру SQL-выражения или не найдете корректно обрабатываемую комбинацию символов.
  3. Соберите с помощью SQL-запросов всю возможную информацию о приложениях, работающих с базой данных.
  4. Соберите с помощью SQL-запросов всю возможную информацию о системе, в кото­рой находится база данных.

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


Один комментарий на «“Советы по избеганию SQL внедрения”»

  1. Спасибо за советы автору респект!

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

Яндекс.Метрика