when what origin missing length content http-headers http-referer

http-headers - what - url referer c#



¿Puedo confiar en el encabezado HTTP del Referer? (2)

¿Puedo confiar en el encabezado HTTP del Referer en mi aplicación web? Quiero verificar si el usuario proviene de un dominio / página web particular y, si lo hizo, cambiar el diseño de mi sitio en consecuencia.

Sé que la gente puede desactivar Referer en sus navegadores. ¿Alguna idea de con qué frecuencia los usuarios hacen eso? ¿Puedo confiar en que Referer esté presente en el 99%?


Como regla general, no debe confiar en el encabezado de referencia de HTTP para ningún asunto de importancia, a excepción del análisis estadístico meramente informativo de quiénes son sus visitantes o cuando busca patrones de comportamiento entre los usuarios de su propio sitio.

Bajo ninguna circunstancia es recomendable que utilice este encabezado para AAA (Autenticación, Autorización y Contabilidad), a menos que, como se comentó anteriormente, considere el análisis simple del tráfico del comportamiento de su visitante.

OWASP (Open Web Application Security Project) lo considera un "Vulnerabilty" usando el encabezado del Referer para AAA en su aplicación Web .

Algunas otras razones más específicas para no confiar en el encabezado del remitente, incluyen:

  • En general, cuando se "vincula" desde una conexión HTTP <-> HTTPS (TLS), la mayoría de los navegadores web estándar no informarán este encabezado.

  • Por razones de privacidad, muchos proxies corporativos están configurados para eliminar / eliminar este encabezado, por lo que incluso si un navegador web envía este encabezado, un software proxy corporativo puede eliminarlo.

  • Fuera en las soluciones de seguridad salvaje, malware, navegadores integrados en aplicaciones ... se sabe que modifican y / o engañan el contenido de este encabezado.

Cuidado con eso:

  • Cuando se "vincula" de HTTPS a HTTPS, la mayoría de los navegadores web estándar informarán a este encabezado incluso cuando cambien el nombre de dominio o el destino de la dirección de red.

Siempre y cuando tengas un comportamiento predeterminado razonable cuando no haya un valor utilizable y no hagas nada sensible basado en él, es probable que esté bien.

Un usuario malintencionado podría establecer ese encabezado en cualquier cosa que desee. Espero que la mayoría de los usuarios no modifiquen el comportamiento predeterminado de sus navegadores, por lo que es probable que esté ahí y sea preciso la mayor parte del tiempo.

Probablemente también hay algunos casos en los que el cambio entre HTTPS y HTTP hará que no se envíe un encabezado de referencia.