Skip to main content
Todos os Termos Glossary

Frame Busting

Definition

O frame busting é uma técnica de segurança que impede que uma página web seja incorporada em um iframe em outro site, o que ajuda a prevenir ataques de clickjacking. Enquanto o frame busting tradicional usava JavaScript, as abordagens modernas se apoiam no cabeçalho X-Frame-Options ou na diretiva frame-ancestors da CSP. Essa proteção é essencial para sites que lidam com ações ou dados sensíveis.

O que é o frame-busting

O frame-busting (ou frame-breaking) é a prática de impedir que uma página seja exibida dentro do iframe de outro site, a defesa central contra o clickjacking. A técnica original era um JavaScript que verificava se a página era a janela de nível superior, por exemplo comparando window.top com window.self, e, se não fosse, forçava a navegação para sair do frame ou ocultava o body. Essa abordagem client-side funcionava, mas se mostrou frágil: os atacantes usavam iframes em sandbox, o evento beforeunload, framing restritivo e outros truques para derrotar scripts ingênuos. O frame-busting moderno migrou em grande parte do JavaScript para cabeçalhos HTTP declarativos, definidos pelo servidor, que o navegador impõe antes mesmo de a página renderizar.

Por que o mecanismo importa

A forma como você quebra os frames determina se a proteção de fato se mantém. O busting baseado em script só roda depois que a página começa a carregar e pode ser suprimido, atrasado ou isolado em sandbox, e falha por completo se o usuário tiver o JavaScript desativado ou se uma extensão interferir. O busting baseado em cabeçalhos é avaliado pelo navegador no momento do carregamento e não pode ser contornado por script pela página que faz o framing, então é estritamente mais confiável. Acertar isso importa porque as páginas mais dignas de serem colocadas em frame, fluxos bancários, ações administrativas, consentimento OAuth, são exatamente aquelas em que um frame-buster contornado se transforma em tomada de conta ou transações não autorizadas via clickjacking.

Implementando corretamente

Prefira cabeçalhos declarativos a scripts. Defina Content-Security-Policy: frame-ancestors com uma allowlist explícita de origens autorizadas a incorporar você, ou 'none' para proibir o framing por completo, e adicione X-Frame-Options: DENY ou SAMEORIGIN para cobrir navegadores mais antigos. Mantenha qualquer fallback em JavaScript apenas como defesa em profundidade, nunca como o único controle. Verifique se os cabeçalhos são enviados em toda rota sensível, incluindo páginas de erro. Como esses são secure headers entregues com suas respostas, um script de terceiros comprometido ou com mau comportamento que os altere ou remova mina a proteção; o monitoramento em tempo de execução da cside consegue detectar quando cabeçalhos de framing são removidos ou enfraquecidos, para que a defesa permaneça intacta em produção.

Definição

X-Frame-Options ou CSP frame-ancestors, qual é a escolha certa?

Use ambos. O CSP frame-ancestors é a diretiva moderna, suporta várias origens permitidas e substitui o X-Frame-Options nos navegadores que o respeitam. O X-Frame-Options (DENY ou SAMEORIGIN) continua sendo um fallback útil para clientes mais antigos que não têm suporte a frame-ancestors. Enviar ambos maximiza a cobertura.

Definição

Por que o frame-busting em JavaScript é considerado não confiável?

Ele só é executado depois que a página carrega e depende de o JavaScript estar habilitado e sem interrupções. Os atacantes conseguem neutralizá-lo com iframes em sandbox, o evento onbeforeunload ou truques de duplo framing. Os controles de framing baseados em cabeçalhos são impostos pelo navegador antes da renderização, então não podem ser contornados por script pela página que incorpora.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Agende uma demonstração

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Vamos mostrar:

Quais scripts de terceiros estão rodando no seu site agora
Como você está em relação aos requisitos 6.4.3 e 11.6.1 do PCI DSS
Qual parte do seu tráfego é de bots e agentes de IA

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário