Конкурсы ко Дню воспитателя

Автор: Лещев Сергей Сергеевич

Преподаватель ГАПОУ СО «Поволжский Колледж технологий и менеджмента»

SQL- инъекции.

Лекция №9. SQL- инъекции. 

Цели занятия:

  1. Образовательная: Сформировать понятие студентов о дисциплине, ее роли в профессиональной деятельности, а также дать основные ее понятия.
  2. Развивающая: развить навыки самостоятельной работы.
  3. Воспитательная: воспитывать умение самостоятельно мыслить.
  4. Методическая: повысить эффективность учебного процесса, обобщение и систематизация учебного материала, раскрытие сущности изучаемых понятий и закономерностей на основе фактического материала.

 

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

Как работает SQL-инъекциях

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

Рассмотрим простое веб-приложение с формой входа. Код HTML-формы приведен ниже:

<form action=‘index.php’ method=»post»>

<input type=»email» name=»email» required=»required»/>

<input type=»password» name=»password»/>

<input type=»checkbox» name=»remember_me» value=»Remember me»/>

<input type=»submit» value=»Submit»/>

</form>

Здесь:

  • Форма принимает адрес электронной почты, а затем пароль отправляется в файл PHP с именем index.php;
  • Сессия хранится в файле cookie. Эта возможность активируется при установке флажка remember_me. Для отправки данных используется метод post. Это означает, что значения не отображаются в URL-адресе.

Предположим, что запрос для проверки идентификатора пользователя на стороне сервера выглядит следующим образом:

SELECT * FROM users WHERE email = $_POST[’email’] AND password = md5($_POST[‘password’]);

Здесь:

  • Запрос использует значения массива $ _POST[] напрямую, не санируя его;
  • Пароль шифруется с использованием алгоритма MD5.

Другие типы атак с использованием SQL-инъекций

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

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

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

Инструменты для автоматизации SQL-инъекций

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

SQLSmack;

SQLPing 2;

SQLMap.

Как предотвратить SQL-инъекции

Вот несколько простых правил, которые позволят защититься от атак с использованием SQL-инъекций:

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

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

Подготовленные запросы — сначала создаются запросы, а затем все предоставленные пользовательские данные обрабатываются в качестве параметров. Это не влияет на синтаксис инструкции SQL.

Регулярные выражения — могут быть использованы для обнаружения потенциально вредоносного кода и его удаления перед выполнением операторов SQL.

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

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

Заключение

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

Следите за новостями в соцсетях

Вконтакте MAX Телеграм Одноклассники

А также подписывайтесь на канал Научно-образовательный вестник «Pedproject.Moscow» в MAX