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

laravel-threat-detection v1.7.2

Пассивное middleware для Laravel, которое обнаруживает и логирует SQL-инъекции, XSS, RCE, бот-сканеры и более 175 паттернов атак. Включает встроенную панель управления, уведомления в 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-приложения и проверен в бою на реальном трафике. 2 400+ тестов, никаких runtime-зависимостей помимо самого Laravel, и для обнаружения не требуется подключение к интернету.

Обновляетесь? См. UPGRADING.md. Хотите внести вклад? См. CONTRIBUTING.md.

Начните меньше чем за минуту

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 ниже. Вот и всё; обнаружение работает.

php artisan threat-detection:doctor   # confirms it is actually recording

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

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

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

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

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

  • Не WAF. Он никогда не блокирует, не фильтрует и не изменяет запрос. Используйте Cloudflare, mod_security или настоящий WAF для принудительного применения. (Нет edge-слоя, которому можно передать управление? Помощники на стороне оператора предоставляют решения пакета, чтобы вы могли написать собственный middleware для блокировки в пять строк — код принудительного применения остаётся вашим, а не пакета.)
  • Не замена безопасному кодированию. Параметризованные запросы, валидация входных данных и экранирование вывода — это ваша реальная защита. Этот пакет предполагает, что ваш код уже безопасен, и даёт вам видимость, а не защиту.
  • Не edge-сервис. Если вы можете поставить Cloudflare впереди, сделайте это — затем добавьте это для детализации на уровне приложения, которую edge-сервисы не видят.
  • Не полный детектор, и он не может им быть. Сопоставление с шаблонами ловит атаки, которые выглядят как известные атаки. Новая техника или знакомая, достаточно переписанная, пройдёт незалогированной — и вам не сообщат, что это произошло. Тишина здесь означает «ничего не совпало», а не «ничего не произошло». Своё место он оправдывает на высокообъёмном, малозатратном трафике, который составляет большую часть того, что реально попадает в публичное Laravel-приложение: сканеры, разведочные пробы, готовые строки инъекций, перебор учётных данных. Относитесь к тихому журналу как к отсутствию доказательств, а не как к доказательству отсутствия.

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

Категории