security - how - ¿Se envía un Referer del encabezado HTTP cuando se va a una página http desde una página https?
referrer-policy apache (4)
Después de algunas pruebas, estoy empezando a llegar a la conclusión de que un navegador no envía un encabezado HTTP de Referer cuando hace clic en una página http desde una https.
¿Para qué es la razón de seguridad? ¿Está definido en algún lugar del estándar?
En realidad, ya no es tan sencillo (2014 en adelante), de acuerdo con este documento w3c sobre la política de referencia .
El comportamiento predeterminado es que los navegadores no envíen información de referencia al pasar de HTTPS a HTTP. Sin embargo, los navegadores enviarán referencias cuando va de HTTPS a HTTPS.
Además, en HTML5, hay una nueva metaetiqueta llamada referrer, que se ve así:
<meta name="referrer" content="origin">
Los nuevos navegadores ya lo han implementado . Entonces, si los navegadores enviarán referrer o no, dependerá de esta metaetiqueta en el futuro cercano. Si esta metaetiqueta no está incluida en el HTML de la página, los navegadores utilizarán el comportamiento predeterminado.
Los siguientes son los posibles valores del atributo de contenido de la metaetiqueta de referencia:
- no-referrer: el remitente no será enviado, independientemente de HTTP o HTTPS
- origen: solo el dominio de origen (principal) se enviará como referencia
- origin-when-crossorigin: Mismo origen enviará URL de referencia completa y Cross origin enviará solo origen URL como referencia
- no-referrer-when-downgrade: este es el comportamiento predeterminado cuando no se proporciona metaetiqueta de referencia en la página.
- url inseguro: esto siempre enviará referencia, independientemente de HTTP o HTTPS
Además, hay algunos valores de atributo heredados para la metaetiqueta de referencia. Ya no se recomiendan, pero se usan en muchos sitios en este momento:
- nunca: lo mismo que no-referrer
- predeterminado: igual que no-referrer-when-downgrade
- siempre: lo mismo que url inseguro
Espero que esta información sea útil para alguien que acaba de encontrar esta publicación después de 2014.
Los estados HTTP RFC , en la sección 15.1.3 Codificación de información confidencial en URI :
Los clientes NO DEBEN incluir un campo de cabecera Referer en una solicitud HTTP (no segura) si la página de referencia se transfirió con un protocolo seguro.
Entonces, esto es comportamiento esperado / estándar.
Motivo: A veces, los SessionID tienen codificación URL. Las páginas HTTP pueden tener scripts cruzados que roban la sesión de la comunicación HTTPS. Para evitar esto, el referente no se transmite en la transición de HTTPS a HTTP, por lo que no se puede robar el identificador de sessin con codificación URL.
Sí, definido en la norma :
Los clientes NO DEBEN incluir un campo de encabezado Referer en una solicitud HTTP (no segura) si la página de referencia se transfirió con un protocolo seguro