
laravel-threat-detection v1.7.2
Middleware Laravel passivo que detecta e registra injeção de SQL, XSS, RCE, scanners de bot e mais de 175 padrões de ataque. Inclui painel integrado, alertas do Slack, API REST e enriquecimento geográfico. IDS, não WAF.
Laravel Threat Detection
Monitoramento de segurança e registro de ataques para Laravel. Detecte e registre injeção de SQL,
XSS, RCE, directory traversal, scanners de bots e sondagens de reconhecimento no estilo /wp-admin —
cada requisição hostil registrada no seu banco de dados com o contexto completo da aplicação.
É um IDS, não um WAF: ele nunca bloqueia, filtra ou modifica uma requisição.
Você está aqui porque viu algo parecido com isto?
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
Essas requisições já estão chegando ao seu aplicativo Laravel. Seu log de acesso mostra a URL e o código de status, e nada mais — nem o payload decodificado, nem qual das suas rotas foi alvo, nem se o mesmo IP já tentou outras quarenta coisas nesta hora.
Este pacote responde a essas perguntas. Coloque-o em qualquer aplicativo Laravel 10–13 e ele começa a escanear cada requisição HTTP em busca de mais de 150 padrões de ataque, pontuando cada correspondência por confiança e gravando-a no seu banco de dados — com um dashboard integrado, alertas no Slack, enriquecimento geográfico e exportações para fail2ban/blocklist. Nenhuma requisição é bloqueada. Pense em câmera de segurança, não em fechadura: ela mostra exatamente quem está sondando suas rotas, com que frequência e com quais técnicas.
Extraído de um aplicativo em produção e testado em batalha com tráfego real. Mais de 2.400 testes, sem dependências de runtime além do próprio Laravel, e nenhuma conexão com a internet necessária para detecção.
Atualizando? Veja UPGRADING.md. Quer contribuir? Veja CONTRIBUTING.md.
Comece em menos de um minuto
composer require jayanta/laravel-threat-detection
php artisan vendor:publish --tag=threat-detection-migrations
php artisan migrate
Em seguida, adicione o middleware ao seu grupo web (uma linha em bootstrap/app.php no Laravel 11+,
ou app/Http/Kernel.php no Laravel 10) — trecho completo em Quick Start abaixo.
É isso; a detecção está ativa.
php artisan threat-detection:doctor # confirms it is actually recording
Onde se encaixa: IDS vs WAF vs edge
Este pacote é um IDS passivo, ao nível da aplicação — observa e registra, não bloqueia. Ele foi feito para ficar ao lado de um WAF ou serviço de edge, não para substituí-lo. Cada camada vê algo que as outras não conseguem:
| Este pacote (IDS de app) | WAF (ModSecurity + OWASP CRS, Cloudflare WAF) | Edge / CDN (Cloudflare) | |
|---|---|---|---|
| Bloqueia requisições maliciosas | ❌ apenas registra | ✅ | ✅ |
| Contexto completo da app (URL exata, payload decodificado, usuário autenticado) | ✅ | ⚠️ parcial | ❌ |
| Dashboard integrado + log de ameaças no seu banco | ✅ | ⚠️ varia | ⚠️ apenas no edge |
| Detecções específicas da app (ex.: PII de Aadhaar / PAN / IFSC) | ✅ integrado + personalizado | ⚠️ escreva suas próprias regras | ⚠️ regras personalizadas, dependente do plano |
| Funciona offline / sem serviço externo | ✅ | ⚠️ depende | ❌ |
| Interrompe o tráfego antes de chegar ao seu servidor | ❌ | ⚠️ apenas WAF em nuvem | ✅ |
| Configuração | composer require, migrar, uma linha de middleware | média–alta | baixa–média |
| Custo | gratuito, MIT | varia | camada gratuita + pago |
Resumindo: um edge/WAF é a fechadura da sua porta; isto é a câmera de segurança do lado de dentro, com o contexto da app para lhe dizer exatamente o que está sendo tentado em qual rota, por quem, e com que frequência. Use-o para alimentar decisões reais — bans do fail2ban, limites de taxa, geo-bloqueio — com dados que sua camada de edge nunca vê.
O que ele deliberadamente NÃO é
- Não é um WAF. Ele nunca bloqueia, filtra ou modifica uma requisição. Use Cloudflare, mod_security, ou um WAF de verdade para aplicação de políticas. (Sem camada de edge para delegar? Os helpers do lado do operador expõem as decisões do pacote para que você possa escrever seu próprio middleware de bloqueio de cinco linhas — o código de aplicação de políticas continua sendo seu, não do pacote.)
- Não substitui a codificação segura. Consultas parametrizadas, validação de entrada e escape de saída são suas defesas reais. Este pacote assume que seu código já é seguro e lhe dá visibilidade, não proteção.
- Não é um serviço de edge. Se você puder colocar o Cloudflare na frente, faça — depois adicione isto para o detalhamento ao nível da aplicação que os serviços de edge não conseguem ver.
- Não é um detector completo, e não pode ser. Correspondência de padrões captura ataques que parecem ataques conhecidos. Uma técnica nova, ou uma familiar reescrita o suficiente, vai passar sem ser registrada — e você não será avisado de que isso aconteceu. Silêncio aqui significa "nada correspondeu", nunca "nada aconteceu". Onde ele ganha seu lugar é no tráfego de alto volume e baixo esforço que compõe a maior parte do que realmente atinge uma aplicação Laravel pública: scanners, sondagens de reconhecimento, strings de injeção prontas, pulverização de credenciais. Trate um log silencioso como ausência de evidência, não como evidência de ausência.