Então, eu tenho brincado com HTTP por diversão no telnet agora (ou seja, apenas digitando telnet google.com 80
e colocando GETs e POSTs aleatórios com cabeçalhos diferentes e similares), mas me deparei com algo que o google.com transmite nos cabeçalhos que eu não sei
Eu estive pesquisando http://www.w3.org/Protocols/rfc2616/rfc2616.html e não encontrei nenhuma definição para esse cabeçalho http específico que o Google parece estar divulgando:
GET / HTTP/1.1
HTTP/1.1 200 OK
Date: Wed, 01 Feb 2012 03:42:24 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=6ddbc0a0342e7e63:FF=0:TM=1328067744:LM=1328067744:S=4d4farvCGl5Ww0C3; expires=Fri, 31-Jan-2014 03:42:24 GMT; path=/; domain=.google.com
Set-Cookie: NID=56=PgRwCKa8EltKnHS5clbFuhwyWsd3cPXiV1-iXzgyKsiy5RKXEKbg89gWWpjzYZjLPWTKrCWhOUhdInOlYU56LOb2W7XpC7uBnKAjMbxQSBw1UIprzw2BFK5dnaY7PRji; expires=Thu, 02-Aug-2012 03:42:24 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
1000
Alguém sabe o que X-XSS-Protection
é?
http
http-headers
xss
midc111
fonte
fonte
Respostas:
X-XSS-Protection é um cabeçalho HTTP entendido pelo Internet Explorer 8 (e versões mais recentes). Esse cabeçalho permite que os domínios ativem e desativem o "Filtro XSS" do IE8, o que evita algumas categorias de ataques XSS. O IE8 tem o filtro ativado por padrão, mas os servidores podem ser desativados definindo
Consulte também http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header. aspx
fonte
X-XSS-Protection:1
e, em seguida, qual algoritmo ele usa para impedir o XSS?X-XSS-Protection: 1
: Forçar proteção XSS (útil se a proteção XSS foi desativada pelo usuário)X-XSS-Protection: 0
: Desativar proteção XSSO token
mode=block
impedirá que o navegador (navegadores IE8 + e Webkit) processe páginas (em vez de higienizar) se um possível ataque de reflexão XSS (= não persistente) for detectado./! \ Atenção,
mode=block
cria uma vulnerabilidade no IE8 ( mais informações ).Mais informações: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx e http://blog.veracode.com / 2014/03 / diretrizes para definição de cabeçalhos de segurança /
fonte
0
é o único valor seguro para esse cabeçalho. Consulte stackoverflow.com/a/57802070/334451 para obter detalhes.Esse cabeçalho de resposta pode ser usado para configurar a proteção reflexiva XSS incorporada de um agente de usuário. Atualmente, apenas o Internet Explorer, o Google Chrome e o Safari (WebKit) da Microsoft suportam esse cabeçalho.
O Internet Explorer 8 incluiu um novo recurso para ajudar a impedir ataques de script entre sites refletidos, conhecido como Filtro XSS . Esse filtro é executado por padrão nas zonas de segurança Internet, Confiável e Restrita. As páginas da zona da Intranet local podem optar pela proteção usando o mesmo cabeçalho.
Sobre o cabeçalho que você postou na sua pergunta,
O cabeçalho
X-XSS-Protection: 1; mode=block
ativa o filtro XSS. Em vez de higienizar a página, quando um ataque XSS é detectado, o navegador impede a renderização da página.Como esse filtro funciona no IE ,
Mais sobre este artigo, https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/
Fonte: https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx
Os desenvolvedores da Web podem querer desativar o filtro para seu conteúdo. Eles podem fazer isso definindo um cabeçalho HTTP:
Mais sobre cabeçalhos de segurança em,
Diretrizes para definir cabeçalhos de segurança
Cabeçalhos HTTP de segurança - X-XSS-PROTECTION
MDN Docs X-XSS-Protection
fonte
X-XSS-Protection: 0
é o único cabeçalho seguro para esse recurso. Para obter detalhes, consulte stackoverflow.com/a/57802070/334451Você pode ver nesta lista de cabeçalhos HTTP úteis .
fonte
X-XSS-Protection: 0
. Para obter detalhes, consulte stackoverflow.com/a/57802070/334451TL; DR: Todos os sites bem escritos (/ apps) precisam emitir cabeçalho
X-XSS-Protection: 0
e esquecer esse recurso. Se você deseja ter segurança extra que os melhores agentes do usuário podem fornecer, use umContent-Security-Policy
cabeçalho estrito .Resposta longa:
O cabeçalho HTTP
X-XSS-Protection
é uma das coisas que a Microsoft introduziu no Internet Explorer 8.0 (MSIE 8) que deveria melhorar a segurança de sites gravados incorretamente.A idéia é aplicar algum tipo de heurística para tentar detectar o ataque XSS de reflexão e neutralizar automaticamente o ataque.
A parte problemática disso é "heurística" e "neutralização". A heurística causa falsos positivos e a castração não pode ser realizada com segurança, pois causa efeitos colaterais que podem ser usados para implementar ataques XSS e ataques DoS em sites perfeitamente seguros.
A parte ruim é que, se um site não emitir o cabeçalho
X-XSS-Protection
, o navegador se comportará como se o cabeçalhoX-XSS-Protection: 1
tivesse sido emitido. A pior parte é que esse valor é o valor menos seguro de todos os valores possíveis para esse cabeçalho!Para um determinado site seguro (ou seja, o site não possui vulnerabilidades XSS de reflexão), esse recurso "proteção XSS" permite os seguintes ataques:
X-XSS-Protection: 1
permite ao invasor bloquear seletivamente partes do JavaScript e manter o restante dos scripts em execução. Isso é possível porque as heurísticas desse recurso são simplesmente "se o valor de qualquer parâmetro GET for encontrado na parte de script da origem da página, o script será modificado automaticamente de maneira dependente do agente do usuário". Na prática, o invasor pode, por exemplo, adicionar parâmetrodisablexss=<script src="framebuster.js"
e o navegador removerá automaticamente a string<script src="framebuster.js"
da fonte real da página. Observe que o restante da página continua sendo executado e o invasor acabou de remover essa parte da segurança da página. Na prática, qualquer JS na origem da página pode ser modificado. Em alguns casos, uma página sem vulnerabilidade XSS com conteúdo refletido pode ser usada para executar o JavaScript selecionado na página devido à neutralizaçãotransformar incorretamente dados de texto sem formatação em código JavaScript executável .X-XSS-Protection: 1; mode=block
permite que o invasor vaze dados da fonte da página usando o comportamento da página como canal lateral. Por exemplo, se a página contiver código JavaScript ao longo das linhas devar csrf_secret="521231347843"
, o invasor simplesmente adiciona um parâmetro extra, por exemplo,leak=var%20csrf_secret="3
e se a página NÃO estiver bloqueada, o3
primeiro dígito estava incorreto. O atacante tenta novamente, desta vezleak=var%20csrf_secret="5
e o carregamento da página será abortado. Isso permite que o invasor saiba que é o primeiro dígito do segredo5
. O atacante continua adivinhando o próximo dígito.No final, se o seu site estiver cheio de ataques de reflexão XSS, o uso do valor padrão de
1
reduzirá um pouco a superfície de ataque. No entanto, se seu site é seguro e você não o emiteX-XSS-Protection: 0
, ele estará vulnerável a qualquer navegador que suporte esse recurso. Se você deseja um suporte profundo da defesa de navegadores contra vulnerabilidades XSS ainda desconhecidas em seu site, use umContent-Security-Policy
cabeçalho estrito . Isso não abre seu site para vulnerabilidades conhecidas.Atualmente, esse recurso está ativado por padrão no MSIE, Safari e Google Chrome. Isso costumava ser ativado no Edge, mas a Microsoft já removeu esse recurso incorreto do Edge . O Mozilla Firefox nunca implementou isso.
Veja também:
https://homakov.blogspot.com/2013/02/hacking-facebook-with-oauth2-and-chrome.html https://blog.innerht.ml/the-misunderstood-x-xss-protection/ http: / /p42.us/ie8xss/Abusing_IE8s_XSS_Filters.pdf https://www.slideshare.net/masatokinugawa/xxn-en https://bugs.chromium.org/p/chromium/issues/detail?id=396544 https: // bugs.chromium.org/p/chromium/issues/detail?id=498982
fonte