Незаконный запрос (англ. 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 – подмена заголовков ответа.
Последствия применения незаконных запросов
- Утечка конфиденциальных данных (пароли, финансовая информация).
- Полный контроль над сервером или базой данных.
- Потеря репутации и юридическая ответственность.
- Временная недоступность сервиса (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).
- Обновляйте зависимости и патчи.
Контрольный список для разработчиков
- Все входные параметры проходят валидацию и санитизацию.
- Для работы с БД используются подготовленные запросы или ORM.
- В шаблонах применяется автоматическое экранирование (Twig, Blade, Handlebars).
- Для форм включён CSRF‑токен и проверяется на сервере.
- В ответах заданы заголовки CSP, HttpOnly, SameSite.
- Включён WAF и настроены правила под конкретное приложение.
- Логи собираются, анализируются и хранятся минимум 30 дней.
- Периодически проводятся тесты на уязвимости.
«Незаконный запрос» – это любой запрос, который нарушает безопасность вашего веб‑приложения. Основная причина их появления – отсутствие строгой проверки и очистки пользовательского ввода. Применяя комплексный подход (валидация, параметризованные запросы, CSP, CSRF‑токены, WAF, мониторинг), вы существенно снижаете риск успешных атак и защищаете данные своих пользователей.
Помните: безопасность – это процесс, а не одноразовая настройка. Регулярно проверяйте код, обновляйте инфраструктуру и обучайте команду.