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.
Conteúdos
- 0.1 O que é o cabeçalho X-Frame-Options e por que ele é importante
- 0.2 Como verificar se o cabeçalho X-Frame-Options está presente
- 0.3 Valores possíveis para o cabeçalho X-Frame-Options
- 0.4 Como implementar o cabeçalho X-Frame-Options
- 0.5 Alternativa moderna: Content-Security-Policy
- 0.6 Testando a eficácia do cabeçalho
- 1 Tentando carregar o site em um iframe:
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
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:
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:
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?