En qué casos HTTP_REFERER estará vacío

163

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ó? ¿Obtener uno vacío es lo mismo que obtener uno vacío? ¿Y bajo qué circunstancias me sale eso también?

mismo viejo
fuente
8
Cuando el cliente no envía uno.
Ignacio Vazquez-Abrams

Respuestas:

277

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.
  • hizo clic en un enlace en una aplicación externa.
  • cambió de una URL https a una URL http.
  • cambió de una URL https a una URL https diferente.
  • tiene instalado un software de seguridad (antivirus / firewall / etc.) que despoja al referente de todas las solicitudes.
  • está detrás de un proxy que despoja al referente de todas las solicitudes.
  • visitó el sitio mediante programación (como curl ) sin establecer el encabezado de referencia (¡searchbots!).
BalusC
fuente
32
Es posible que desee agregar "cuando el usuario pasa de una página segura (HTTPS) a una insegura".
John Pick el
44
"visitó el sitio como primera página en la ventana / pestaña". ¿Incluso si fue haciendo clic en un enlace y abriéndolo en una nueva ventana / pestaña? ¿Estás seguro? Eso sería un comportamiento muy incorrecto del navegador
matteo
También vea aquí stackoverflow.com/questions/21922143/… para ver las
excepciones
44
"cambió de una URL https a una URL https diferente". ¿Estas seguro acerca de esto? : \
Oscar Mederos
55
De manera predeterminada, cambiar de una URL HTTPS a una URL HTTPS diferente establece el referente completo. Sin embargo, esta política predeterminada se puede anular. w3.org/TR/referrer-policy
Dhaval Kapil
34

HTTP_REFERER: enviado por el navegador, indicando la última página que vio el navegador.

Si confía en [HTTP_REFERER] por algún motivo importante, no debe hacerlo, ya que puede falsificarse fácilmente:

  1. Algunos navegadores limitan el acceso para no permitir que se pase HTTP_REFERER
  2. Escriba una dirección en la barra de direcciones no pasará el HTTP_REFERER
  3. abrir una nueva ventana del navegador no pasará HTTP_REFERER, porque HTTP_REFERER = NULL
  4. tiene algún complemento de navegador que lo bloquea por razones de privacidad. Algunos firewalls y AV lo hacen.

Pruebe esta extensión de Firefox, podrá configurar los encabezados que desee:

@ Maestro de celebración:

Firefox

extensiones: refspoof , refontrol , modificar encabezados , sin referencia

Deshabilitar completamente: la opción está disponible en about: config en "network.http.sendRefererHeader" y desea establecer esto en 0 para deshabilitar el pase del árbitro.

Google Chrome / Chromium:

extensiones: noref , spoofy , noreferrer externo

Deshabilite completamente: Chnage ~ / .config / google-chrome / Default / Preferences o ~ / .config / chromium / Default / Preferences y configure esto:

{
   ...
   "enable_referrers": false,
   ...
}

O simplemente agregue --no-referrers al acceso directo o en cli:

google-chrome --no-referrers

Ópera:

Deshabilite completamente: Configuración> Preferencias> Avanzado> Red, y desmarque "Enviar información de referencia"

Servicio web de suplantación de identidad:

http://referer.us/

Proxy de filtrado independiente (falsificación de cualquier encabezado):

Privoxy

Spoofing http_referer cuando se usa wget

'--referer = url'

Spoofing http_referer cuando se usa curl

-e, - referencia

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)
Ese tipo
fuente
Tamper Data es otra extensión de Firefox que vale la pena ver si quieres jugar con valores de referencia cambiantes.
Chris Hepner
Me estaba esforzando mucho por recordar su nombre. pero mi memoria me traicionó. Gracias :)
ThatGuy
@nix Some browsers limit access to not allow HTTP_REFERER to be passed¿Podría nombrar un ejemplo para dicho navegador y / o extensión?
Maestro de celebración
@MasterofCelebration agregó formas de falsificar http_referer en mi respuesta.
ThatGuy
¡No use referer.us para falsificar / ocultar su referente! No funciona y filtra tu información. El único servicio que funciona en este momento es este servicio gratuito de referencia de ocultación .
Brian Smith
9

La lista de BalusC es sólida. Una forma adicional en que este campo aparece frecuentemente vacío es cuando el usuario está detrás de un servidor proxy. Esto es similar a estar detrás de un firewall, pero es un poco diferente, así que quería mencionarlo en aras de la integridad.

Noctámbulo
fuente
8

También estará vacío si se utiliza el nuevo borrador estándar de la Política de referencia para evitar que el encabezado de referencia se envíe al origen de la solicitud. Ejemplo:

<meta name="referrer" content="none">

Aunque Chrome y Firefox ya han implementado una versión borrador de la Política de referencia, debe tener cuidado con ella porque, por ejemplo, Chrome espera en no-referrerlugar de none(y he visto también en neveralguna parte).

Joel Richard
fuente
tabla de compatibilidad del navegador: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
djvg
0

He encontrado que la implementación del navegador de referencia es realmente inconsistente.

Por ejemplo, un elemento de anclaje con el atributo "descargar" funciona como se esperaba en Safari y envía el referente, pero en Chrome el referente estará vacío o "-" en los registros del servidor web.

<a href="http://foo.com/foo" download="bar">click to download</a>

Está roto en Chrome: no se envió ningún árbitro.

jmoz
fuente