Clickjacking é o ataque em que um site malicioso carrega a sua página dentro de um iframe transparente e engana o usuário para clicar em botões que ele acha que são dele. Duas defesas existem — e uma delas está saindo de cena.
As duas defesas
| Mecanismo | Como funciona | Situação |
|---|---|---|
| X-Frame-Options: DENY / SAMEORIGIN | Header: navegador recusa carregar em iframe | Legado, ainda suportado |
| CSP frame-ancestors | Diretiva: frame-ancestors 'none' / 'self' / allowlist |
Moderno e mais flexível |
Erros que reprovam
-
X-Frame-Options: ALLOWALL— libera explicitamente o framing (falha direta) - CSP com
frame-ancestors *— mesma coisa - Nenhum dos dois — página fica "apertável"
- Só XFO quando a página usa widgets de terceiros (empurra você a liberar demais)
Como verificar (passivo)
curl -sI https://seu-site.com | grep -iE "x-frame-options|content-security-policy"
Sem os dois headers (ou com ALLOWALL) a página é frameável. A CLI reconpp marca isso automaticamente com correção sugerida:
pip install git+https://github.com/bryanrafaelbueno/reconpp
reconpp -u https://seu-site.com -f md -o relatorio.md
Saída:
[WARN] headers | Clickjacking (X-Frame-Options / frame-ancestors)
Fix: Adicione 'X-Frame-Options: DENY' ou CSP 'frame-ancestors 'none''.
Recomendação
- Sistemas novos: só CSP (
frame-ancestors 'none') - Legados: mantém XFO até ter CSP válido
- Nunca ALLOWALL; allowlist mínima e documentada se o site realmente precisa ser incorporado
Adividade de segurança completa (70+ pontos) no ebook pt-BR — amostra grátis:
Top comments (0)