Назад к обновлениям
New releaseJul 24, 2026

laravel-threat-detection v1.4.0

Пассивное промежуточное ПО для обнаружения угроз в Laravel. Регистрирует SQL-инъекции, XSS, RCE, сканеры ботов, 404-пробы и более 175 шаблонов атак. Встроенная панель управления, экспорт в fail2ban, Slack-оповещения и REST API. IDS, а не WAF.

Поделиться

Latest Version Tests PHPStan Level 5 Code Style Pint Total Downloads PHP Version License

Laravel Threat Detection

Мониторинг безопасности и журналирование атак для Laravel. Обнаружение и запись SQL-инъекций, XSS, RCE, обхода каталогов, ботов-сканеров и разведочных запросов в стиле /wp-admin — каждый враждебный запрос фиксируется в вашей базе данных с полным контекстом приложения. Это IDS, а не WAF: он никогда не блокирует, не фильтрует и не изменяет запрос.

Установите пакет, отправьте три атаки — SQL-инъекцию, обход каталогов, XSS — каждая возвращает HTTP 200, потому что ничего не блокируется, и все три уже учтены в threat-detection:stats

Вы здесь, потому что увидели что-то подобное?```

GET /wp-admin/setup-config.php 404 — on a site that isn't WordPress GET /.env 404 — someone wants your database password GET /?id=1' UNION SELECT password FROM 200 — SQL injection against a real route GET /phpmyadmin/index.php 404 — scanning for an admin panel

Эти запросы уже достигают вашего Laravel-приложения. Ваш лог доступа показывает URL
и код статуса, и больше ничего — ни декодированную полезную нагрузку, ни то, какой из ваших
маршрутов был атакован, ни то, пробовал ли тот же IP сорок других вещей за этот час.

Этот пакет отвечает на эти вопросы. Установите его в любое приложение на Laravel 10–13, и он начнёт
сканировать каждый HTTP-запрос по 150+ шаблонам атак, оценивая каждое совпадение по
уровню достоверности и записывая его в вашу базу данных — со встроенной панелью управления, оповещениями в Slack,
геообогащением и экспортом для fail2ban/блок-листов. Ни один запрос никогда не блокируется. Думайте о нём как о
камере наблюдения, а не о замке: он показывает вам, кто именно прощупывает ваши маршруты, как
часто и какими методами.

> Извлечён из production-приложения и проверен в бою на реальном трафике. 1 857 тестов, никаких runtime-
> зависимостей помимо самого Laravel, и для обнаружения не требуется подключение к интернету.
>
> Обновляетесь? См. [UPGRADING.md](https://github.com/jay123anta/laravel-threat-detection/blob/main/UPGRADING.md). Хотите внести вклад? См. [CONTRIBUTING.md](https://github.com/jay123anta/laravel-threat-detection/blob/main/CONTRIBUTING.md).

## Начните меньше чем за минуту```bash
composer require jayanta/laravel-threat-detection
php artisan vendor:publish --tag=threat-detection-migrations
php artisan migrate

Затем добавьте middleware в вашу группу web (одна строка в bootstrap/app.php на Laravel 11+, или app/Http/Kernel.php на Laravel 10) — полный фрагмент в разделе Quick Start ниже. Вот и всё; обнаружение активно.```bash php artisan threat-detection:doctor # confirms it is actually recording

---

## Где это место: IDS против WAF против edge

Этот пакет — **пассивный IDS уровня приложения** — он наблюдает и записывает, но не
блокирует. Он предназначен для работы *рядом* с WAF или edge-сервисом, а не для их
замены. Каждый слой видит то, чего не видят другие:

| | **Этот пакет** (app IDS) | **WAF** (mod_security, Cloudflare WAF) | **Edge / CDN** (Cloudflare) |
|---|:---:|:---:|:---:|
| Блокирует вредоносные запросы | ❌ только логирует | ✅ | ✅ |
| Полный контекст приложения (точный маршрут, декодированный payload, аутентифицированный пользователь) | ✅ | ⚠️ частично | ❌ |
| Встроенный дашборд + журнал угроз в вашей БД | ✅ | ⚠️ зависит | ⚠️ только edge |
| Обнаружения, специфичные для приложения (например, Aadhaar / PAN / IFSC PII) | ✅ пользовательские шаблоны | ❌ | ❌ |
| Работает офлайн / без внешнего сервиса | ✅ | ⚠️ зависит | ❌ |
| Останавливает трафик до того, как он достигнет вашего приложения | ❌ | ✅ edge | ✅ |
| Установка | один `composer require` | средняя–высокая | низкая–средняя |
| Стоимость | бесплатно, MIT | зависит | бесплатный тариф + платный |

**Кратко:** edge/WAF — это замок на двери; это — камера безопасности
*внутри*, с контекстом приложения, позволяющим точно сказать, что пытаются сделать, на каком маршруте, кем и как часто. Используйте её для принятия реальных решений — банов fail2ban, ограничений скорости,
геоблокировки — на основе данных, которых ваш edge-слой никогда не видит.

### Чем это намеренно НЕ является

- **Не WAF.** Он никогда не блокирует, не фильтрует и не изменяет запрос. Для принудительного применения используйте Cloudflare,
  mod_security или настоящий WAF. (Нет edge-слоя, которому можно передать управление? 
  [Помощники на стороне оператора](#acting-on-the-data-operator-side-blocking) предоставляют
  решения пакета, чтобы вы могли написать собственное middleware для блокировки в пять строк —
  код принудительного применения остаётся вашим, а не пакета.)
- **Не замена безопасному кодированию.** Параметризованные запросы, валидация входных данных и
  экранирование вывода — это ваши настоящие средства защиты. Этот пакет предполагает, что ваш код уже
  безопасен, и даёт вам *видимость*, а не защиту.
- **Не edge-сервис.** Если вы можете поставить Cloudflare впереди, сделайте это — затем добавьте этот пакет для
  детализации на уровне приложения, которую edge-сервисы не видят.
- **Не полный детектор, и он не может им быть.** Сопоставление с шаблонами ловит атаки, которые
  *выглядят как* известные атаки. Новая техника или знакомая, достаточно переписанная, пройдёт
  незалогированной — и вам не сообщат, что это произошло. Тишина здесь означает
  «ничего не совпало», а не «ничего не произошло». Своё место он оправдывает на
  высокообъёмном, малозатратном трафике, который составляет большую часть того, что реально попадает в публичное
  Laravel-приложение: сканеры, разведочные зонды, готовые строки инъекций, credential
  sprays. Относитесь к тихому журналу как к отсутствию доказательств, а не как к доказательству отсутствия.

### Ожидайте, что он отметит ваш собственный контент в первый же день

Ненастроенная установка срабатывает на легитимном контенте, и вы должны знать это до
установки, а не после. Это измеренные факты, а не гипотетические — набор тестов
фиксирует именно этот список, чтобы он не дрейфовал ([`LegitimateTrafficCorpusTest`](https://github.com/jay123anta/laravel-threat-detection/blob/main/tests/Feature/LegitimateTrafficCorpusTest.php)):

Категории