Pular para o conteúdo
>_ITDITDPlataforma de Segurança Web

Glossário

O que é clickjacking — armadilhas invisíveis que fazem você clicar em botões ocultos

O clickjacking sobrepõe uma página real de forma invisível sobre o site do atacante, fazendo um usuário logado clicar em botões 'ocultos'. Como funciona e a defesa de verdade (CSP frame-ancestors e X-Frame-Options para que seu site não possa ser colocado em frame) — explicado de forma defensiva, sem passos de ataque.

Publicado 2026-06-10 Atualizado 2026-06-10 4 min de leitura

"O botão em que você clicou de propósito era, na verdade, um botão de uma página oculta por baixo" — isso é clickjacking. Veja como ele funciona e como preveni-lo de forma confiável (sem passos de ataque).

O que é alvo

Tudo que seja "um clique, feito, e valioso".

Alvo provávelPor quê
Confirmar uma transferência/compraUm clique move dinheiro
Mudança de configuração (visibilidade, apps conectados)Prepara um domínio futuro ou acesso a dados
OAuth / "Permitir" permissãoAprova silenciosamente uma vinculação de conta
Seguir / curtir / postar em redes sociaisAbusado para disseminação e fazenda de curtidas

Por que funciona

Os navegadores podem carregar outro site num iframe e empilhá-lo por cima. O atacante torna esse iframe transparente (opacity 0), de modo que o usuário só vê a interface-isca colocada por baixo. Quando o usuário clica no "botão falso", o botão real posicionado logo acima recebe o clique.

Página do atacante: "Você ganhou um prêmio — clique abaixo!"
= um iframe transparente da página real do banco/configurações por cima
↓ o usuário clica no botão-isca visível
o botão real "Confirmar" logo acima é o que de fato é clicado
↓ sob o próprio login do usuário
transferência / mudança de configuração / consentimento se conclui como "a ação do usuário"
O atacante empilha o site real de forma invisível; só a interface-isca fica visível. O clique é absorvido pelo botão real transparente.

Parece-se com o CSRF, mas o CSRF envia uma requisição nos bastidores, enquanto o clickjacking faz o usuário operar a tela real — então tokens CSRF sozinhos não o impedem.

Defesa: a correção de verdade é "não poder ser colocado em frame"

1

Defina CSP frame-ancestors (o mais importante)

Adicione Content-Security-Policy: frame-ancestors 'self' (apenas sua própria origem pode colocá-lo em frame). Se ninguém precisa embutir você, 'none' é o mais seguro. Liste domínios apenas para os parceiros que você permite explicitamente.

2

Adicione X-Frame-Options também (compatível com versões antigas)

Para clientes mais antigos, envie também X-Frame-Options: DENY (ou SAMEORIGIN). Reforço duplo entre navegadores antigos e novos.

3

Exija um segundo passo para ações críticas

Proteja transferências e concessões de permissão atrás de reautenticação, de uma caixa de confirmação ou de uma verificação de intenção — mais difícil de conduzir por uma sobreposição silenciosa.

4

Torne os cookies de sessão SameSite

SameSite=Lax/Strict contém o envio automático entre sites. Não é uma correção completa de clickjacking por si só, mas enfraquece a classe mais ampla de "ação iniciada a partir de outro site".

A visão deste site: uma linha de cabeçalho faz o máximo — meça seu próprio site primeiro

A defesa contra clickjacking não é código sofisticado; são uma ou duas linhas de cabeçalho de resposta que removem a base de que uma sobreposição precisa. Aplique-as em todo o site no framework ou no proxy reverso (Caddy/nginx) para que nada escape. Você pode verificar se frame-ancestors está de fato ativo com o verificador de cabeçalhos de segurança nas ferramentas deste site. "Achei que tinha configurado" — o cabeçalho ausente — é a falha mais comum.

Leia a seguir

FAQ

QO que o clickjacking pode fazer?
A

Um clique que o usuário faz 'de propósito' cai no botão de uma página real posicionada por baixo. Ações críticas de um clique são abusadas: transferências de dinheiro, mudanças de configuração, concessão de permissões, seguir/curtir em redes sociais, botões de consentimento. Ele não rouba uma senha — faz o usuário já logado executar a ação.

QQual é a principal defesa?
A

Recusar ser embutido no frame de outro site. Defina a diretiva CSP frame-ancestors como 'self' (ou apenas domínios permitidos) nos cabeçalhos de resposta e adicione X-Frame-Options: DENY para compatibilidade retroativa. Isso remove a superfície de que uma sobreposição precisa.

QO frame-busting via JavaScript é suficiente?
A

Não. Scripts antigos de 'sair se eu estiver num iframe' têm muitas formas de contorno e não ajudam quando o JS está desativado. A correção de verdade são cabeçalhos no servidor (frame-ancestors / X-Frame-Options) que dizem ao navegador para recusar o embed.