Незаконные HTTP-запросы: виды атак, последствия и методы защиты

Разбираем анатомию illegal request: почему валидация — твой лучший друг, а грязные данные — враг №1. Защити приложение как профи!

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Незаконный запрос (англ. illegal request) – это любой HTTP‑запрос к веб‑приложению, который нарушает правила безопасности и/или бизнес‑логики сервера. Такие запросы обычно генерируются злоумышленником с целью получить несанкционированный доступ к данным, выполнить нежелательные действия или вывести приложение из строя.

Почему появляются незаконные запросы?

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

  • внедрить в запросы к базе данных вредоносный код (SQL‑инъекция);
  • вставить в страницу скрипт, который выполнится в браузере жертвы (XSS‑атака);
  • подделить запрос от имени авторизованного пользователя (CSRF);
  • переполнить буфер, вызвать отказ в обслуживании (DoS/DDoS) и т.п.

Все перечисленные сценарии – типичные примеры незаконных запросов.

Классификация наиболее распространённых незаконных запросов

SQL‑инъекция

Злоумышленник вставляет в параметры запроса SQL‑операторы, меняя смысл исходного запроса к базе данных.

SELECT * FROM users WHERE login = 'admin' AND password = '123';

Если пароль передаётся без экранирования, атакующий может отправить:

' OR '1'='1

и получить доступ к любой учётной записи.

XSS (Cross‑Site Scripting)

Внедрение в страницу клиентского JavaScript‑кода, который будет выполнен в браузере другого пользователя.

<script>alert('XSS')</script>

Такой код может украсть cookies, токены, выполнить запросы от имени жертвы.

CSRF (Cross‑Site Request Forgery)

Атака, при которой пользователь, находясь в авторизованной сессии, неосознанно отправляет запрос, инициированный злоумышленником.

<img src="https://bank.example/transfer?to=attacker&amount=1000" />

Другие типы

  • Directory Traversal – попытка выйти за пределы разрешённого каталога.
  • Command Injection – выполнение системных команд через параметры.
  • HTTP‑Header Injection – подмена заголовков ответа.

Последствия применения незаконных запросов

  1. Утечка конфиденциальных данных (пароли, финансовая информация).
  2. Полный контроль над сервером или базой данных.
  3. Потеря репутации и юридическая ответственность.
  4. Временная недоступность сервиса (DoS/DDoS).

Как защититься от незаконных запросов?

Валидация и санитизация входных данных

Каждый параметр, полученный от клиента, должен проходить две стадии проверки:

  • Валидация – проверка формата, диапазона, типа (число, e‑mail, дата и т.д.).
  • Санитизация – удаление/экранирование потенциально опасных символов.

Пример в PHP:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) {
 die('Некорректный e‑mail');
}

Параметризованные запросы (Prepared Statements)

Используйте PDO или MySQLi с привязанными параметрами – они автоматически экранируют ввод.

$stmt = $pdo->prepare('SELECT * FROM users WHERE login = :login');
$stmt->execute(['login' => $_POST['login']]);

Защита от XSS

  • Использовать Content‑Security‑Policy (CSP) – ограничивает источники скриптов.
    Content‑Security‑Policy: default-src 'self'; script-src 'self' https://apis.google.com;
  • Устанавливать флаги HttpOnly и SameSite для cookies:
    Set-Cookie: session_id=...; HttpOnly; SameSite=Strict; Secure

Защита от CSRF

Внедрять уникальный токен в каждую форму и проверять его на сервере.

// генерация токена
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// в форме
<input type="hidden" name="csrf_token" value="">

// проверка
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
 die('CSRF‑атака обнаружена');
}

Применение WAF (Web Application Firewall)

WAF фильтрует входящий трафик до того, как запрос достигнет приложения. Он способен блокировать:

  • SQL‑инъекции и XSS‑паттерны;
  • запросы с подозрительными заголовками;
  • частые запросы от одного IP (защита от DDoS).

Ограничение прав доступа

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

Логирование и мониторинг

Записывайте все подозрительные запросы (неудачные попытки авторизации, запросы с необычными параметрами). Интегрируйте систему оповещений (SIEM, ELK).

Регулярные аудиты и тесты безопасности

  • Проводите пентесты (например, с помощью Burp Suite, sqlmap).
  • Используйте статический анализ кода (SonarQube, PHPStan).
  • Обновляйте зависимости и патчи.

Контрольный список для разработчиков

  1. Все входные параметры проходят валидацию и санитизацию.
  2. Для работы с БД используются подготовленные запросы или ORM.
  3. В шаблонах применяется автоматическое экранирование (Twig, Blade, Handlebars).
  4. Для форм включён CSRF‑токен и проверяется на сервере.
  5. В ответах заданы заголовки CSP, HttpOnly, SameSite.
  6. Включён WAF и настроены правила под конкретное приложение.
  7. Логи собираются, анализируются и хранятся минимум 30 дней.
  8. Периодически проводятся тесты на уязвимости.

«Незаконный запрос» – это любой запрос, который нарушает безопасность вашего веб‑приложения. Основная причина их появления – отсутствие строгой проверки и очистки пользовательского ввода. Применяя комплексный подход (валидация, параметризованные запросы, CSP, CSRF‑токены, WAF, мониторинг), вы существенно снижаете риск успешных атак и защищаете данные своих пользователей.

Помните: безопасность – это процесс, а не одноразовая настройка. Регулярно проверяйте код, обновляйте инфраструктуру и обучайте команду.