Así que he estado jugando con HTTP por diversión en telnet ahora (es decir, simplemente escribiendo telnet google.com 80
y colocando GET y POST aleatorios con diferentes encabezados y similares), pero me encontré con algo que google.com transmite en sus encabezados que yo no lo se
He estado buscando en http://www.w3.org/Protocols/rfc2616/rfc2616.html y no he encontrado ninguna definición para este encabezado http en particular que Google parece estar diciendo:
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
Alguien sabe lo que X-XSS-Protection
es?
http
http-headers
xss
midc111
fuente
fuente
Respuestas:
X-XSS-Protection es un encabezado HTTP entendido por Internet Explorer 8 (y versiones más recientes). Este encabezado permite que los dominios activen y desactiven el "Filtro XSS" de IE8, lo que evita algunas categorías de ataques XSS. IE8 tiene el filtro activado por defecto, pero los servidores pueden apagarse si se configuran
Ver también http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header. aspx
fuente
X-XSS-Protection:1
y luego, ¿qué algoritmo usa para prevenir XSS?X-XSS-Protection: 1
: Fuerza de protección XSS (útil si el usuario deshabilitó la protección XSS)X-XSS-Protection: 0
: Deshabilitar la protección XSSEl token
mode=block
evitará que el navegador (IE8 + y los navegadores Webkit) muestren páginas (en lugar de desinfectar) si se detecta un posible ataque de reflexión XSS (= no persistente)./! \ Advertencia,
mode=block
crea una vulnerabilidad en IE8 ( más información ).Más información: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx y http://blog.veracode.com / 2014/03 / Guidelines-for-setting-security-headers /
fuente
0
es el único valor seguro para este encabezado. Consulte stackoverflow.com/a/57802070/334451 para más detalles.Este encabezado de respuesta se puede utilizar para configurar la protección XSS reflectante integrada de un agente de usuario. Actualmente, solo Internet Explorer, Google Chrome y Safari (WebKit) de Microsoft admiten este encabezado.
Internet Explorer 8 incluye una nueva característica para ayudar a prevenir ataques de secuencias de comandos entre sitios reflejados, conocido como el filtro XSS . Este filtro se ejecuta de manera predeterminada en las zonas de seguridad de Internet, Confiable y Restringido. Las páginas de la zona de Intranet local pueden optar por la protección utilizando el mismo encabezado.
Sobre el encabezado que publicó en su pregunta,
El encabezado
X-XSS-Protection: 1; mode=block
habilita el filtro XSS. En lugar de desinfectar la página, cuando se detecta un ataque XSS, el navegador evitará la representación de la página.Cómo funciona este filtro en IE ,
Más sobre este artículo, https://blogs.msdn.microsoft.com/ie/2008/07/02/ie8-security-part-iv-the-xss-filter/
Fuente: https://msdn.microsoft.com/en-us/library/dd565647(v=vs.85).aspx
Los desarrolladores web pueden deshabilitar el filtro para su contenido. Pueden hacerlo configurando un encabezado HTTP:
Más sobre encabezados de seguridad en,
Pautas para configurar encabezados de seguridad
Encabezados HTTP de seguridad - X-XSS-PROTECTION
MDN Docs X-XSS-Protection
fuente
X-XSS-Protection: 0
es el único encabezado seguro para esta función. Para más detalles, consulte stackoverflow.com/a/57802070/334451Puede ver en esta Lista de encabezados HTTP útiles .
fuente
X-XSS-Protection: 0
. Para más detalles, consulte stackoverflow.com/a/57802070/334451TL; DR: Todos los sitios web (/ aplicaciones) bien escritos tienen que emitir encabezado
X-XSS-Protection: 0
y simplemente olvidarse de esta característica. Si desea tener seguridad adicional que los mejores agentes de usuario pueden proporcionar, use unContent-Security-Policy
encabezado estricto .Respuesta larga:
El encabezado HTTP
X-XSS-Protection
es una de esas cosas que Microsoft introdujo en Internet Explorer 8.0 (MSIE 8) que supuestamente mejoraría la seguridad de los sitios web escritos incorrectamente.La idea es aplicar algún tipo de heurística para tratar de detectar el ataque de reflexión XSS y neutralizar automáticamente el ataque.
La parte problemática de esto es "heurística" y "castración". La heurística causa falsos positivos y la esterilización no se puede realizar de manera segura porque causa efectos secundarios que se pueden usar para implementar ataques XSS y ataques DoS en sitios web perfectamente seguros.
Lo malo es que si un sitio web no emite el encabezado
X-XSS-Protection
, el navegador se comportará como si el encabezadoX-XSS-Protection: 1
hubiera sido emitido. ¡La peor parte es que este valor es el valor menos seguro de todos los valores posibles para este encabezado!Para un sitio web seguro dado (es decir, el sitio no tiene vulnerabilidades XSS de reflexión), esta característica de "protección XSS" permite los siguientes ataques:
X-XSS-Protection: 1
permite al atacante bloquear selectivamente partes de JavaScript y mantener el resto de los scripts en ejecución. Esto es posible porque la heurística de esta característica es simplemente "si el valor de cualquier parámetro GET se encuentra en la parte de secuencia de comandos de la fuente de la página, la secuencia de comandos se modificará automáticamente de forma dependiente del agente de usuario". En la práctica, el atacante puede, por ejemplo, agregar parámetrosdisablexss=<script src="framebuster.js"
y el navegador eliminará automáticamente la cadena<script src="framebuster.js"
de la fuente de la página real. Tenga en cuenta que el resto de la página continúa ejecutándose y el atacante acaba de eliminar esta parte de la seguridad de la página. En la práctica, cualquier JS en la fuente de la página puede modificarse. En algunos casos, una página sin vulnerabilidad XSS que tenga contenido reflejado se puede usar para ejecutar JavaScript seleccionado en la página debido a la esterilizaciónconvertir incorrectamente datos de texto sin formato en código JavaScript ejecutable .X-XSS-Protection: 1; mode=block
permite al atacante filtrar datos de la fuente de la página utilizando el comportamiento de la página como canal lateral. Por ejemplo, si la página contiene código JavaScript a lo largo de las líneas devar csrf_secret="521231347843"
, el atacante simplemente agrega un parámetro adicional, por ejemplo,leak=var%20csrf_secret="3
y si la página NO está bloqueada, el3
primer dígito era incorrecto. El atacante lo intenta nuevamente, esta vezleak=var%20csrf_secret="5
y la carga de la página se cancelará. Esto le permite al atacante saber que el primer dígito del secreto es5
. El atacante continúa adivinando el siguiente dígito.Al final, si su sitio está lleno de ataques de reflexión XSS, el uso del valor predeterminado de
1
reducirá un poco la superficie de ataque. Sin embargo, si su sitio es seguro y no emiteX-XSS-Protection: 0
, su sitio será vulnerable con cualquier navegador que admita esta función. Si desea un soporte de defensa en profundidad de los navegadores contra vulnerabilidades XSS aún desconocidas en su sitio, use unContent-Security-Policy
encabezado estricto . Eso no abre su sitio a vulnerabilidades conocidas.Actualmente, esta función está habilitada de forma predeterminada en MSIE, Safari y Google Chrome. Esto solía estar habilitado en Edge, pero Microsoft ya eliminó esta característica errónea de Edge . Mozilla Firefox nunca implementó esto.
Ver también:
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
fuente