--- title: X-Frame-Options slug: Web/HTTP/Headers/X-Frame-Options tags: - Cabeçalho de Resposta - Express - Gecko - HAProxy - HTTP - IIS - Segurança - nginx translation_of: Web/HTTP/Headers/X-Frame-Options ---
O cabeçalho de resposta HTTP X-Frame-Options pode ser usado para indicar se o navegador deve ou não renderizar a página em um {{HTMLElement("frame")}}, {{HTMLElement("iframe")}}, {{HTMLElement("embed")}} ou {{HTMLElement("object")}}. Sites podem usar isso para evitar ataques click-jacking, assegurando que seus conteúdos não sejam embebedados em outros sites.
A segurança adicionada é provida somente se o usuário acessando o documento está usando o navegador que suporte X-Frame-Options.
Nota: O cabeçalho HTTP {{HTTPHeader("Content-Security-Policy")}}possui uma diretiva frame-ancestors que torna este cabeçalho obsoleto para navegadores que o suportam.
| Tipo de cabeçalho | {{Glossary("Response header")}} |
|---|---|
| {{Glossary("Forbidden header name")}} | não |
Existem duas diretivas possíveis para X-Frame-Options:
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN
Se você especifica DENY, não somente tentativas em carregar a página em um enquadramento irão falhar quando carregadas de outros sites, mas irão falhar também se forem carregadas do mesmo site. Por outro lado, se você especifica SAMEORIGIN, você ainda pode usar a página em um enquadramento enquanto o site que o está incluindo no enquadramento seja o mesmo servindo a página.
DENYSAMEORIGINALLOW-FROM uri {{obsolete_inline()}}SAMEORIGIN sofreu — ela não checa se os enquadramentos ancestrais para ver se eles são da mesma origem. O cabeçalho HTTP {{HTTPHeader("Content-Security-Policy")}} tem a diretiva frame-ancestors que você pode usar ao invés disso.Nota: Colocar X-Frame-Options dentro de um elemento {{HTMLElement("meta")}} é inútil! Por enquanto, <meta http-equiv="X-Frame-Options" content="deny"> não tem nenhum efeito. Não o utilize! X-Frame-Options funciona somenete colocando a configuração através do cabeçalho HTTP, como nos exemplos abaixo.
Para configurar o Apache para que ele envie o cabeçalho X-Frame-Options para todas as páginas, adicione isto nas configurações do seu site:
Header always set X-Frame-Options "SAMEORIGIN"
Para configurar o Apache para colocar o X-Frame-Options como DENY, adicione isto nas configurações do seu site:
Header set X-Frame-Options "DENY"
Para configurar o nginx para enviar o cabeçalho X-Frame-Options, adicione isto na configuração do seu http, servidor ou localização:
add_header X-Frame-Options SAMEORIGIN always;
Para configurar o IIS para enviar o cabeçalho X-Frame-Options, adicione isto no arquivo Web.config do seu site:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Ou veja este artigo de suporte de configuração da Microsoft utilizando a interface de usuário IIS Manager.
Para configurar o HAProxy para enviar o cabeçalho X-Frame-Options, adicione isto na sua configuração do seu front-end, listen, ou backend:
rspadd X-Frame-Options:\ SAMEORIGIN
Alternativamente, em versões mais novas:
http-response set-header X-Frame-Options SAMEORIGIN
Para configurar o Express para enviar o cabeçalho X-Frame-Options, você pode usar o helmet que utiliza o frameguard para colocar o cabeçalho. Adicione isto na configuração do seu servidor:
const helmet = require('helmet');
const app = express();
app.use(helmet.frameguard({ action: 'SAMEORIGIN' }));
Alternativamente, você pode usar o frameguard diretamente:
const frameguard = require('frameguard')
app.use(frameguard({ action: 'SAMEORIGIN' }))
| Especificação | Título |
|---|---|
| {{RFC("7034")}} | HTTP Header Field X-Frame-Options |
{{Compat("http.headers.X-Frame-Options")}}