Uma auditoria útil não é teatro de ferramentas verdes. É encontrar o que pode derrubar a aplicação ou vazar dados, documentar com evidência e priorizar o que corrigir primeiro.
Esta metodologia aplica-se a aplicações PHP/Laravel, Node.js e WordPress (multisite, Elementor, lojas com pagamentos). Quando há ecommerce ou gateways locais, inclui checkout e webhooks — a mesma superfície coberta por pagamentos online.
Distribuição das 48 horas
Horas 0–4: mapa de superfície
- Inventário de rotas públicas (web + API).
- Formulários, uploads, webhooks de pagamento, cron endpoints.
- Headers atuais, cookies, redirecionamentos.
- No WordPress: versão, tema filho, plugins ativos, usuários administrator.
- Em multisite: sites, super-admins e plugins de rede.
Horas 4–16: autenticação e sessão
- Reset de senha, enumeração de usuários, rate limiting.
- Cookies
Secure/HttpOnly/SameSite. - CSRF em formulários que alteram estado.
- JWT:
exp, rotação, armazenamento inseguro emlocalStorage. - Admin WordPress ou Filament/Horizon exposto sem MFA.
Horas 16–32: injeção e lógica de negócio
- SQL / ORM mal usado, XSS armazenado, path traversal.
- Mass assignment no Laravel (
$fillable/$guarded). - IDOR: dá para ver o pedido
#id+1? - Em pagamentos: confirmar que o valor não é confiado ao cliente.
- Upload: tipo real do arquivo, não só a extensão.
Horas 32–48: dependências e entregável
composer/npm auditcom critério.- Plugins WordPress abandonados ou com advisories conhecidos.
- Secrets no repo,
.envexposto, backups públicos. - Relatório P0/P1/P2 + plano de remediação por sprint.
Checklist prático
- Há
.env,.gitou backups acessíveis por URL? - Login, reset e APIs sensíveis têm rate limit?
- Cookies de sessão têm flags corretos em HTTPS?
- CSRF está ativo em formulários que alteram estado?
- Policies/capabilities existem e são chamadas em cada rota?
- Uploads validam MIME real?
- Webhooks de pagamento validam assinatura/origem e são idempotentes?
- Headers de segurança (CSP, HSTS) existem sem quebrar o front?
- Dependências críticas têm dono de atualização?
- O deploy pode reintroduzir o mesmo secret ou plugin antigo?
Laravel: pontos de revisão
- Validação com Form Requests em todas as entradas de API.
- Autorização: Policies/Gates em show/update/destroy.
- Mass assignment: modelos com
$guarded = []ou fillables perigosos. - Files:
Storagecom disco privado; URLs assinadas. - Filas com backoff e dead-letter; payloads sem PII desnecessária.
APP_DEBUG=falseem prod; Telescope/Horizon não públicos.
WordPress: pontos de revisão
- Remover usuário
admingenérico; revisar papéis; 2FA em contas privilegiadas. - XML-RPC: desabilitar se não houver app legítima que precise.
- REST: endpoints de usuários que vazam informação.
- Uploads: bloqueio de execução em
uploads. - WooCommerce: plugins de gateway atualizados; webhooks com permissões mínimas.
Formato do entregável
| Prioridade | Critério | Exemplo |
|---|---|---|
| P0 | Explorável já / alto impacto | RCE, SQLi, pagamento manipulável, .env público |
| P1 | Alto risco | XSS armazenado, IDOR de pedidos, CSRF em ações sensíveis |
| P2 | Endurecimento | Headers incompletos, plugins antigos ainda não expostos |
Cada achado inclui: onde, como reproduzir, risco, correção sugerida e esforço relativo. Conecta com DevOps e Coolify e cibersegurança .