O que é "X-Content-Type-Options = nosniff"?

291

Estou fazendo alguns testes de penetração no meu host local com o OWASP ZAP e ele continua relatando esta mensagem:

O cabeçalho X-Content-Type-Options do Anti-MIME-Sniffing não foi definido como 'nosniff'

Essa verificação é específica para o Internet Explorer 8 e o Google Chrome. Verifique se cada página define um cabeçalho de tipo de conteúdo e o X-CONTENT-TYPE-OPTIONS se o cabeçalho de tipo de conteúdo for desconhecido

Não faço ideia do que isso significa e não consegui encontrar nada online. Eu tentei adicionar:

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

mas ainda recebo o alerta.

Qual é a maneira correta de definir o parâmetro?

Koffeehaus
fonte

Respostas:

178

Impede que o navegador faça sniffing do tipo MIME. A maioria dos navegadores agora respeita este cabeçalho, incluindo Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 e Opera> = 13. Veja:

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

O envio do novo cabeçalho de resposta X-Content-Type-Options com o valor nosniff impedirá o Internet Explorer de capturar uma resposta MIME do tipo de conteúdo declarado.

EDITAR:

Ah, e isso é um cabeçalho HTTP, não uma opção de meta tag HTML.

Consulte também: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Remi Gacogne
fonte
22
Você deve mencionar isso for servers hosting untrusted content. Para sites que não exibem conteúdo de envios de usuários, não é necessário definir isso.
precisa
12
@machineaddict, Errado . Farejar ocorrerá independentemente de o conteúdo ser confiável ou não. Consulte security.stackexchange.com/a/11761/2379 . Ele quebrará seu site de maneiras sutis. Sempre desative o sniffing se você não gostar de surpresas.
Pacerier 29/03
33
Eu acho que você perdeu a parte "O que é o cheiro do MIME?"
VarunAgw
3
firefoxsuporta este cabeçalho agora, também: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/...
VasiliNovikov
'Aplicar' o cabeçalho pode ser interpretado como 'exigente', alterei para 'respeitando'.
Charlie
135

Descrição

Definir o X-Content-Type-Optionscabeçalho de resposta HTTP de um servidor para nosniffinstruir os navegadores a desativar o conteúdo ou o sniffing MIME, que é usado para substituir os Content-Typecabeçalhos de resposta para adivinhar e processar os dados usando um tipo de conteúdo implícito. Embora isso possa ser conveniente em alguns cenários, também pode levar a alguns ataques listados abaixo. A configuração do servidor para retornar o X-Content-Type-Optionscabeçalho de resposta HTTP configurado para nosniffinstruirá os navegadores que suportam sniffing MIME a usar o fornecido pelo servidor Content-Typee não interpretar o conteúdo como um tipo de conteúdo diferente.

Suporte do navegador

O X-Content-Type-Optionscabeçalho de resposta HTTP é suportado no Chrome, Firefox e Edge, bem como em outros navegadores. O suporte mais recente ao navegador está disponível na Tabela de compatibilidade do navegador Mozilla Developer Network (MDN) para X-Content-Type-Options:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

Ataques contra-atacados

  1. MIME Confusion Attack permite ataques através de sites de conteúdo gerados pelo usuário, permitindo que os usuários façam upload de códigos maliciosos que são executados por navegadores que interpretam os arquivos usando tipos de conteúdo alternativos, por exemplo, implícitos application/javascripte explícitos text/plain. Isso pode resultar em um ataque "download drive-by", que é um vetor de ataque comum para phishing. Os sites que hospedam conteúdo gerado pelo usuário devem usar esse cabeçalho para proteger seus usuários. Isso é mencionado por VeraCode e OWASP, que diz o seguinte:

    Isso reduz a exposição a ataques de download drive-by e sites que veiculam conteúdo carregado por usuários que, por nomes inteligentes, poderiam ser tratados pelo MSIE como arquivos HTML executáveis ​​ou dinâmicos.

  2. Hotlinking não autorizado também pode ser ativado peloContent-Typesniffing. Ao vincular sites a recursos com uma finalidade, por exemplo, exibir, os aplicativos podem contar com o sniffing do tipo de conteúdo e gerar muito tráfego em sites para outra finalidade, onde pode ser contra seus termos de serviço, por exemplo, o GitHub exibe o código JavaScript para visualização, mas não para execução:

    Alguns usuários não humanos irritantes (ou seja, computadores) adotaram a opção de "hotlinking" ativos por meio do recurso de visualização não processada - usando o URL não processado como srcuma tag <script>ou <img>. O problema é que esses não são ativos estáticos. A visualização de arquivo bruto, como qualquer outra visualização em um aplicativo Rails, deve ser renderizada antes de ser devolvida ao usuário. Isso aumenta rapidamente o desempenho. No passado, fomos forçados a bloquear conteúdo popular veiculado dessa maneira, porque exercia pressão excessiva sobre nossos servidores.

Grokify
fonte
Quem pensou que decidir ignorar um tipo de conteúdo explícito e usar palpites seria uma boa idéia? omg ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Este cabeçalho evita ataques baseados em "mímica". Esse cabeçalho impede que o Internet Explorer detecte uma resposta do MIME do tipo de conteúdo declarado, pois o cabeçalho instrui o navegador a não substituir o tipo de conteúdo da resposta. Com a opção nosniff, se o servidor disser que o conteúdo é text / html, o navegador o renderizará como text / html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

Ganhou Jun Bae
fonte
1
Não deveria ser sempre assim ?! Acho estranho que um navegador tente agir como "inteligente" e ignore um cabeçalho explícito do tipo de conteúdo.
Sam Sirry
25

Para servidores Microsoft IIS, você pode ativar este cabeçalho através do seu web.configarquivo:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

E você terminou.

Entre
fonte
3
Também é possível definir cabeçalhos personalizados no IIS, mas sua solução é melhor, pois pode ser controlada pela origem e não gerenciada pela configuração.
ajeh
9

O cabeçalho HTTP da resposta X-Content-Type-Options é um marcador usado pelo servidor para indicar que os tipos MIME anunciados nos cabeçalhos do tipo de conteúdo não devem ser alterados e seguidos. Isso permite desativar o sniffing do tipo MIME ou, em outras palavras, é uma maneira de dizer que os webmasters sabiam o que estavam fazendo.

Sintaxe:

Opções de tipo de conteúdo X: nosniff

Diretivas:

nosniff Bloqueia uma solicitação se o tipo solicitado for 1. "style" e o tipo MIME não for "text / css" ou 2. "script" e o tipo MIME não for do tipo JavaScript MIME.

Nota: o nosniff se aplica apenas aos tipos "script" e "estilo". A aplicação de nosniff também às imagens mostrou-se incompatível com os sites existentes.

Especificação:

https://fetch.spec.whatwg.org/#x-content-type-options-header

Sahil Aggarwal
fonte