Tempo de leitura: 3 minutos

O cabeçalho X-Frame-Options é uma camada crucial de segurança que impede que seu site seja incorporado em frames por domínios não autorizados, protegendo seus usuários contra ataques de clickjacking que podem comprometer dados sensíveis.

Verificar a presença deste cabeçalho HTTP é essencial para garantir que seu site não seja vulnerável a ataques onde hackers incorporam seu conteúdo em sites maliciosos, fazendo com que usuários interajam com sua página sem perceber.

O que é o cabeçalho X-Frame-Options e por que ele é importante

O X-Frame-Options é um cabeçalho HTTP de resposta que permite que você controle se um navegador deve ou não permitir que sua página seja exibida em um , , ou . Implementado corretamente, este cabeçalho pode proteger seus usuários contra uma série de ataques, sendo o clickjacking o mais comum.

Clickjacking (também conhecido como “UI redressing”) é uma técnica maliciosa onde um atacante usa múltiplas camadas transparentes ou opacas para enganar um usuário a clicar em um botão ou link em uma página quando eles estavam tentando clicar em algo completamente diferente. Assim, o atacante “sequestra” os cliques destinados a outro site e os redireciona para sua própria página.

“O cabeçalho X-Frame-Options é uma das medidas de segurança mais simples e eficazes que você pode implementar para proteger seus usuários. Ele é suportado por todos os navegadores modernos e deve ser considerado um requisito básico para qualquer site que se preocupa com segurança.” – OWASP (Open Web Application Security Project)

Como verificar se o cabeçalho X-Frame-Options está presente

Existem várias maneiras de verificar se seu site está enviando o cabeçalho X-Frame-Options corretamente. Vou mostrar as mais comuns e acessíveis:

1. Usando as Ferramentas de Desenvolvedor do navegador

Esta é provavelmente a maneira mais rápida e direta de verificar:

1. Abra seu site no navegador
2. Pressione F12 (ou Ctrl+Shift+I no Windows/Linux, ou Cmd+Option+I no Mac) para abrir as Ferramentas de Desenvolvedor
3. Navegue até a aba “Rede” (ou “Network”)
4. Recarregue a página (F5 ou Ctrl+R)
5. Clique no primeiro item da lista (geralmente o documento HTML principal)
6. Procure na seção “Cabeçalhos” ou “Headers” por “X-Frame-Options”

2. Usando serviços online de teste de segurança

Várias ferramentas online podem verificar seus cabeçalhos HTTP, incluindo o X-Frame-Options:

  • Security Headers – Uma ferramenta gratuita que analisa os cabeçalhos de segurança do seu site
  • Mozilla Observatory – Ferramenta abrangente que verifica várias configurações de segurança
  • SSL Labs – Além de verificar seu certificado SSL, também mostra alguns cabeçalhos de segurança

3. Usando a linha de comando

Se você está confortável com o terminal, pode usar o comando curl:

curl -I https://seusite.com

Este comando mostrará todos os cabeçalhos HTTP retornados pelo seu site, incluindo o X-Frame-Options se estiver presente.

Valores possíveis para o cabeçalho X-Frame-Options

Se o cabeçalho estiver presente, ele pode ter um dos seguintes valores:

  • DENY: Impede qualquer domínio de incorporar sua página em um frame
  • SAMEORIGIN: Permite que apenas o mesmo domínio incorpore sua página em um frame
  • ALLOW-FROM uri: Permite que um domínio específico incorpore sua página (obsoleto em navegadores modernos)

“Recomendamos usar o valor SAMEORIGIN a menos que você tenha certeza de que sua página nunca deve ser incorporada em frames, caso em que DENY seria mais apropriado.” – Mozilla Developer Network (MDN)

Como implementar o cabeçalho X-Frame-Options

Se você descobrir que seu site não tem o cabeçalho X-Frame-Options, aqui está como implementá-lo em diferentes ambientes:

Servidor Apache

Adicione a seguinte linha ao seu arquivo .htaccess ou à configuração do servidor:

Header always set X-Frame-Options “SAMEORIGIN”

Servidor Nginx

Adicione esta linha ao bloco de configuração do seu site:

add_header X-Frame-Options “SAMEORIGIN” always;

IIS (Internet Information Services)

Adicione ao seu web.config:

PHP

Adicione esta linha no início do seu script PHP:

header(‘X-Frame-Options: SAMEORIGIN’);

Node.js (Express)

Use o middleware helmet:

const helmet = require(‘helmet’);
app.use(helmet.frameguard({ action: ‘sameorigin’ }));

Alternativa moderna: Content-Security-Policy

Embora o X-Frame-Options seja amplamente suportado, a diretiva frame-ancestors da Content-Security-Policy (CSP) oferece mais flexibilidade e está substituindo gradualmente o X-Frame-Options em sites modernos:

Content-Security-Policy: frame-ancestors ‘self’;

Esta diretiva CSP é equivalente a X-Frame-Options: SAMEORIGIN, mas permite especificar múltiplos domínios, o que não é possível com X-Frame-Options.

Testando a eficácia do cabeçalho

Depois de implementar o cabeçalho, é importante verificar se ele está funcionando corretamente. Uma maneira simples de testar é criar uma página HTML em um domínio diferente que tenta incorporar seu site em um iframe:

Teste de X-Frame-Options

Tentando carregar o site em um iframe:

Se o X-Frame-Options estiver configurado corretamente como DENY ou SAMEORIGIN, o iframe não carregará seu site quando acessado de um domínio diferente.

Considerações finais sobre o X-Frame-Options

Implementar o cabeçalho X-Frame-Options é uma medida de segurança simples mas crucial que todo desenvolvedor web deve considerar. No entanto, é apenas uma parte de uma estratégia de segurança abrangente. Considere também implementar outros cabeçalhos de segurança como Content-Security-Policy, Strict-Transport-Security, X-Content-Type-Options e X-XSS-Protection.

Lembre-se de que a segurança web é um processo contínuo, não um estado final. Regularmente verifique e atualize suas configurações de segurança para proteger seu site e seus usuários contra novas ameaças.

Você já verificou outros cabeçalhos de segurança em seu site além do X-Frame-Options? Quais outras medidas de segurança você está considerando implementar?

Avatar de Rafael P.

Perguntas Frequentes

O que é o cabeçalho X-Frame-Options e para que serve?

O cabeçalho X-Frame-Options é uma diretiva HTTP que informa ao navegador se uma página pode ser exibida em um frame ou iframe. Ele é utilizado para prevenir ataques de clickjacking, onde um site malicioso tenta enganar o usuário a interagir com conteúdo que não é visível.

Quais são os valores possíveis para o cabeçalho X-Frame-Options?

Os valores possíveis para o cabeçalho X-Frame-Options são ‘DENY’, que bloqueia completamente o uso de frames, ‘SAMEORIGIN’, que permite que a página seja exibida em frames apenas se o origin for o mesmo, e ‘ALLOW-FROM uri’, que permite que a página seja exibida em frames a partir de um URI específico.

Como posso verificar se o cabeçalho X-Frame-Options está presente no meu site?

Você pode verificar a presença do cabeçalho X-Frame-Options utilizando ferramentas de desenvolvedor no seu navegador (como o Chrome DevTools), acessando a aba ‘Network’, selecionando a requisição da sua página e procurando pelo cabeçalho na seção de ‘Response Headers’.

O que acontece se eu não implementar o cabeçalho X-Frame-Options?

Se você não implementar o cabeçalho X-Frame-Options, seu site fica vulnerável a ataques de clickjacking, onde um atacante pode incorporar sua página em um frame de um site malicioso, potencialmente enganando os usuários a interagir com conteúdo que compromete sua segurança.

O cabeçalho X-Frame-Options é suficiente para proteger meu site contra clickjacking?

Embora o cabeçalho X-Frame-Options forneça uma camada de proteção eficaz contra clickjacking, ele não é a única medida de segurança necessária. É recomendável combinar sua utilização com outras práticas de segurança, como Content Security Policy (CSP) e validação de entrada, para garantir uma proteção mais robusta.

O caminho até aqui

Início » Checklist » Segurança e Configurações Técnicas Essenciais » O cabeçalho X-Frame-Options está presente?

Somente membros podem interagir com o conteúdo.