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

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

Тестировщик » QA-блог » Прочее » Как тестировать SQL-инъекции

Проверка устойчивости приложений перед SQL-инъекциями

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

На изображение проверка устойчивости приложений перед SQL-инъекциями.

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

Что такое SQL

SQL (Structured Query Language, «Язык структурированных запросов») — это язык программирования для создания, модификации и управления запросами к базе данных (БД). Поэтому, если разработанное приложение включает в себя БД и, соответственно, механизм взаимодействия с ней, то с помощью SQL-запросов можно:

  • Получать имеющиеся в БД данные;
  • Добавлять в БД новые записи;
  • Редактировать имеющуюся в БД информацию;
  • Удалять данные из БД;
  • Менять структуру таблиц данных в БД;
  • Создавать новые таблицы.

Как работает SQL

SQL работает через направление запросов к БД. Например:

  • Select – выбрать запись в БД;
  • Insert into – вставить данные;
  • Create table – создать таблицу;
  • Drop table – удалить таблицу с указанным именем.

Эти команды применимы, естественно, для тех приложений, у которых система управления базами данных (СУБД) сделана на SQL, например: MySQL, PostgreSQL, MSSQL. Указанные СУБД довольно часто используются в разработке сайтов благодаря своей простоте. Однако, как мы сейчас выясним, эта простота имеет и обратную сторону: небрежность в коде может повлечь утечку или потерю данных в ПО.

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

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

Получается, что в код как бы «впрыскивают» зловредный компонент, поэтому такой тип уязвимости называют инъекциями. Это уязвимость на стороне сервера.

Пример SQL-инъекции

Допустим, наш сайт запрашивает у пользователя id (идентификатор) товара, затем в таблице GOODS ищет запись с этим id и выдает найденные данные. Если это закодировать, например, в PHP, то будет выглядеть так:

$id = $REQUEST[‘id’];
$q = “select * from GOODS where id={$id}”;
Database::query($q);

Предполагается, что клиент в id запишет натуральное число. Однако, злоумышленник может прислать не число, а специальную последовательность символов, например:

1; drop table GOODS

И тогда первоначальный код превратится в следующее:

select * from GOODS where id=1; drop table GOODS

Дело в том, что SQL-команды могут разделяться точкой с запятой, поэтому СУБД на SQL прочитает это и выполнит как 2 отдельных команды:

select * from GOODS where id=1

drop table GOODS

И если первая из них безобидная, то вторая – удалит всю таблицу GOODS.

Как тестировщик может проверить ПО на SQL-инъекции

Тестировщик может протестировать уязвимость софта перед SQL-инъекциями, пробуя ввести в поле ввода символы-маркеры SQL-языка, например:

  • Точка с запятой;
  • Кавычки;
  • Двойные кавычки;
  • Знак вопроса.

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

Резюме

SQL-инъекции – это злонамеренный запрос к БД приложения. Она может повлечь изменение и/или потерю данных на сервере. Тестировщики проверяют ПО на возможность SQL-инъекций, вводя символы-маркеры этого языка запросов.

на изображение автор Михаил Кулешов

Автор Михаил Кулешов

Михаил, профессиональный партнерский маркетолог, является основателем компании South Media OÜ, которая была создана в 2018 году и базируется в Таллинне. С 2016 года Михаил уехал из Финляндии и жил как настоящий «цифровой кочевник» в IT-индустрии, путешествуя по миру только с ноутбуком. Михаил работает и пишет статьи, связанные с IT-индустрией.

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

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