--- 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.
DENY
SAMEORIGIN
ALLOW-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")}}