security - origin - ¿En qué casos estará HTTP_REFERER vacío?
no-referrer-when-downgrade php (4)
Sé que es posible obtener un HTTP_REFERER vacío. ¿Bajo qué circunstancias sucede esto? Si obtengo uno vacío, ¿siempre significa que el usuario lo cambió? ¿Conseguir uno vacío es lo mismo que obtener uno nulo? y bajo qué circunstancias lo consigo también?
Estará / puede estar vacío cuando el usuario final
- ingresó la URL del sitio en la barra de direcciones del navegador.
- visitó el sitio mediante un marcador mantenido por el navegador.
- visitó el sitio como primera página en la ventana / pestaña.
- cambiado de una URL https a una URL http.
- cambiado de una URL https a una URL https diferente.
- tiene instalado un software de seguridad (antivirus / firewall / etc.) que quita la referencia de todas las solicitudes.
- está detrás de un proxy que quita la referencia de todas las solicitudes.
- visitó el sitio mediante programación (como curl ) sin configurar el encabezado de referencia (¡searchbots!).
HTTP_REFERER - enviado por el navegador, ¡indicando la última página que el navegador vio!
Si confía en [HTTP_REFERER] por cualquier motivo que sea importante, no debería hacerlo, ya que se puede falsificar fácilmente:
- Algunos navegadores limitan el acceso para no permitir que se pase HTTP_REFERER
- Escribir una dirección en la barra de direcciones no pasará el HTTP_REFERER
- abrir una nueva ventana del navegador no pasará el HTTP_REFERER, porque HTTP_REFERER = NULL
- tiene algún complemento de navegador que lo bloquea por razones de privacidad. Algunos firewalls y AVs lo hacen.
Pruebe esta extensión de Firefox, podrá configurar los encabezados que desee:
@Master of Celebration:
Firefox:
extensiones: refspoof , refontrol , modificar encabezados , no-referer
Deshabilitar completamente: la opción está disponible en about: config en "network.http.sendRefererHeader" y desea establecer esto en 0 para deshabilitar el paso del referer.
Google Chrome / Chromium:
extensiones: noref , spoofy , noreferrer externo
Deshabilitar por completo: Chnage ~ / .config / google-chrome / Default / Preferences o ~ / .config / chromium / Default / Preferences y configurar esto:
{
...
"enable_referrers": false,
...
}
O simplemente agrega --no-referrers al acceso directo o en cli:
google-chrome --no-referrers
Ópera:
Deshabilitar completamente: Configuración> Preferencias> Avanzado> Red y desmarque "Enviar información de referencia"
Servicio web de spoofing:
Proxy de filtrado independiente (parodia de cualquier encabezado):
Spoofing http_referer cuando se usa wget
''--referer = url''
Spoofing http_referer cuando usa curl
-e, -referer
Spoofing http_referer con telnet
telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
La lista de BalusC es sólida. Una forma adicional de que este campo aparezca con frecuencia vacío es cuando el usuario está detrás de un servidor proxy. Esto es similar a estar detrás de un cortafuegos, pero es ligeramente diferente, así que quería mencionarlo en aras de la integridad.
También estará vacío si se utiliza el nuevo borrador estándar de la Política de referencia para evitar que el encabezado del referer se envíe al origen de la solicitud. Ejemplo:
<meta name="referrer" content="none">
Aunque Chrome y Firefox ya han implementado una versión preliminar de la Política de referencias, debe tener cuidado con ella porque, por ejemplo, Chrome espera que no-referrer
lugar de none
(y tampoco he visto never
algún lugar).