In welchen Fällen ist HTTP_REFERER leer

163

Ich weiß, dass es möglich ist, einen leeren HTTP_REFERER zu erhalten. Unter welchen Umständen passiert das? Wenn ich eine leere bekomme, bedeutet das immer, dass der Benutzer sie geändert hat? Ist das Erhalten eines leeren das gleiche wie das Erhalten eines Nullen? und unter welchen umständen bekomme ich das auch

gleichalt
quelle
8
Wenn der Client keinen sendet.
Ignacio Vazquez-Abrams

Antworten:

276

Es wird / kann leer sein, wenn der Endbenutzer

  • Geben Sie die Site-URL in die Adressleiste des Browsers ein.
  • besuchte die Website durch ein vom Browser gepflegtes Lesezeichen.
  • besuchte die Site als erste Seite im Fenster / Tab.
  • Klicken Sie auf einen Link in einer externen Anwendung.
  • von einer https-URL zu einer http-URL gewechselt.
  • von einer https-URL zu einer anderen https-URL gewechselt.
  • hat Sicherheitssoftware installiert (Antivirus / Firewall / etc), die den Referrer von allen Anfragen befreit.
  • befindet sich hinter einem Proxy, der den Referrer von allen Anforderungen befreit.
  • besuchte die Site programmgesteuert (wie Curl ), ohne den Referrer-Header zu setzen (Searchbots!).
BalusC
quelle
32
Möglicherweise möchten Sie hinzufügen, "wenn der Benutzer von einer sicheren (HTTPS) Seite zu einer unsicheren Seite wechselt".
John Pick
4
"besuchte die Site als erste Seite im Fenster / Tab." Auch wenn es war, indem Sie auf einen Link klicken und ihn in einem neuen Fenster / Tab öffnen? Bist du sicher? Das wäre ein sehr falsches Verhalten des Browsers
matteo
Siehe auch stackackflow.com/questions/21922143/… für Ausnahmen hierzu
GetFree
4
"Von einer https-URL zu einer anderen https-URL gewechselt". Bist du dir da sicher? : \
Oscar Mederos
5
Standardmäßig wird beim Wechseln von einer HTTPS-URL zu einer anderen HTTPS-URL der vollständige Verweis festgelegt. Diese Standardrichtlinie kann jedoch überschrieben werden. w3.org/TR/referrer-policy
Dhaval Kapil
34

HTTP_REFERER - wird vom Browser gesendet und gibt die letzte Seite an, die der Browser angezeigt hat!

Wenn Sie [HTTP_REFERER] aus einem wichtigen Grund vertrauen, sollten Sie dies nicht tun, da es leicht gefälscht werden kann:

  1. Einige Browser beschränken den Zugriff darauf, dass HTTP_REFERER nicht übergeben werden kann
  2. Wenn Sie eine Adresse in die Adressleiste eingeben, wird der HTTP_REFERER nicht übergeben
  3. Wenn Sie ein neues Browserfenster öffnen, wird HTTP_REFERER nicht übergeben, da HTTP_REFERER = NULL ist
  4. hat ein Browser-Addon, das es aus Datenschutzgründen blockiert. Einige Firewalls und AVs tun dies.

Probieren Sie diese Firefox-Erweiterung aus. Sie können beliebige Header festlegen:

@ Meister der Feier:

Feuerfuchs:

Erweiterungen: refspoof , refontrol , Header ändern , kein Referer

Vollständig deaktivieren: Die Option ist in about: config unter "network.http.sendRefererHeader" verfügbar. Sie möchten dies auf 0 setzen, um die Übergabe von Referenten zu deaktivieren.

Google Chrom / Chrom:

Erweiterungen: noref , spoofy , externer noreferrer

Deaktivieren Sie vollständig: Chnage ~ / .config / google-chrome / Default / Preferences oder ~ / .config / chromium / Default / Preferences und legen Sie Folgendes fest:

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

Oder fügen Sie einfach --no-referrers zur Verknüpfung oder in cli hinzu:

google-chrome --no-referrers

Oper:

Deaktivieren Sie vollständig: Einstellungen> Einstellungen> Erweitert> Netzwerk und deaktivieren Sie "Referrer-Informationen senden".

Spoofing-Webdienst:

http://referer.us/

Standalone-Filter-Proxy (Fälschung eines Headers):

Privoxy

Spoofing von http_referer bei Verwendung von wget

'--referer = url'

Spoofing von http_referer bei Verwendung von Curl

-e, --referer

Spoofing http_referer mit 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)
Dieser Typ
quelle
Tamper Data ist eine weitere Firefox-Erweiterung, die einen Blick wert ist, wenn Sie mit sich ändernden Referrer-Werten spielen möchten.
Chris Hepner
Ich habe mich sehr bemüht, mich an den Namen zu erinnern. aber meine Erinnerung hat mich verraten. Danke :)
ThatGuy
@nix Some browsers limit access to not allow HTTP_REFERER to be passedKönnten Sie bitte ein Beispiel für einen solchen Browser und / oder eine solche Erweiterung nennen?
Meister der Feier
@MasterofCelebration hat meiner Antwort Möglichkeiten hinzugefügt, http_referer zu fälschen.
ThatGuy
Verwenden Sie referer.us nicht, um Ihren Referrer zu fälschen / zu verbergen! Es funktioniert nicht und verliert Ihre Informationen. Der derzeit einzige funktionierende Dienst ist dieser kostenlose Verweisdienst .
Brian Smith
9

Die Liste von BalusC ist solide. Eine weitere Möglichkeit, wie dieses Feld häufig leer angezeigt wird, besteht darin, dass sich der Benutzer hinter einem Proxyserver befindet. Dies ist ähnlich wie hinter einer Firewall, unterscheidet sich jedoch geringfügig, sodass ich es der Vollständigkeit halber erwähnen wollte.

Nachteule
quelle
8

Es ist auch leer, wenn der neue Standardentwurf für die Referrer-Richtlinie verwendet wird, um zu verhindern, dass der Referer-Header an den Anforderungsursprung gesendet wird. Beispiel:

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

Obwohl Chrome und Firefox bereits einen Entwurf der Referrer - Richtlinie implementiert haben, sollten Sie damit vorsichtig sein , da zum Beispiel Chrome erwartet no-referrerstatt none(und ich habe auch gesehen , neverirgendwo).

Joel Richard
quelle
Browserkompatibilitätstabelle: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
djvg
0

Ich habe festgestellt, dass die Implementierung des Browser-Referers wirklich inkonsistent ist.

Beispielsweise funktioniert ein Ankerelement mit dem Attribut "Download" in Safari wie erwartet und sendet den Referer. In Chrome ist der Referer jedoch leer oder "-" in den Webserverprotokollen.

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

Ist in Chrome kaputt - kein Referer gesendet.

jmoz
quelle