W jakich przypadkach HTTP_REFERER będzie puste

163

Wiem, że można uzyskać pusty HTTP_REFERER. W jakich okolicznościach to się dzieje? Jeśli otrzymam pusty, czy zawsze oznacza to, że użytkownik go zmienił? Czy otrzymanie pustego to to samo, co uzyskanie zerowego? iw jakich okolicznościach to też dostaję?

w tym samym wieku
źródło
8
Gdy klient go nie wysyła.
Ignacio Vazquez-Abrams

Odpowiedzi:

277

Będzie / może być pusty, gdy użytkownik końcowy

  • wprowadził adres URL witryny w samym pasku adresu przeglądarki.
  • odwiedzili witrynę za pomocą zakładki obsługiwanej przez przeglądarkę.
  • odwiedził witrynę jako pierwszą stronę w oknie / karcie.
  • kliknął łącze w zewnętrznej aplikacji.
  • przełączono z adresu URL https na adres URL http.
  • przełączono z adresu URL https na inny adres URL https.
  • ma zainstalowane oprogramowanie zabezpieczające (antywirus / zapora ogniowa / itp.), które usuwa stronę odsyłającą z wszystkich żądań.
  • znajduje się za proxy, które usuwa stronę odsyłającą ze wszystkich żądań.
  • odwiedził witrynę programowo (np. curl ) bez ustawiania nagłówka strony odsyłającej (roboty wyszukiwania!).
BalusC
źródło
32
Możesz chcieć dodać „gdy użytkownik przechodzi z bezpiecznej (HTTPS) strony na niezabezpieczoną”.
John Pick
4
„odwiedził witrynę jako pierwszą stronę w oknie / karcie”. Nawet gdyby było to kliknięcie w link i otwarcie go w nowym oknie / karcie? Jesteś pewny? To byłoby bardzo złe zachowanie przeglądarki
matteo
Zobacz także tutaj stackoverflow.com/questions/21922143/ ... wyjątki od tego
GetFree
4
„przełączono z adresu URL https na inny adres URL https”. Jesteś tego pewien? : \
Oscar Mederos
5
Domyślnie przełączenie z adresu URL HTTPS na inny adres URL HTTPS powoduje ustawienie pełnego odsyłacza. Ta domyślna zasada może jednak zostać zastąpiona. w3.org/TR/referrer-policy
Dhaval Kapil
34

HTTP_REFERER - wysyłany przez przeglądarkę, podający ostatnią stronę przeglądaną przez przeglądarkę!

Jeśli ufasz [HTTP_REFERER] z jakiegokolwiek ważnego powodu, nie powinieneś, ponieważ można to łatwo sfałszować:

  1. Niektóre przeglądarki ograniczają dostęp, aby nie zezwalać na przekazywanie HTTP_REFERER
  2. Wpisz adres w pasku adresu nie przejdzie HTTP_REFERER
  3. otwarcie nowego okna przeglądarki nie przejdzie HTTP_REFERER, ponieważ HTTP_REFERER = NULL
  4. ma dodatek do przeglądarki, który blokuje go ze względu na ochronę prywatności. Niektóre zapory i AV to robią.

Wypróbuj to rozszerzenie do Firefoksa, będziesz mógł ustawić dowolne nagłówki:

@ Mistrz świętowania:

Firefox:

rozszerzenia: refspoof , refontrol , modyfikuj nagłówki , no-referer

Całkowicie wyłącz: opcja jest dostępna w about: config pod "network.http.sendRefererHeader" i chcesz ustawić ją na 0, aby wyłączyć przekazywanie referer.

Google chrome / Chromium:

rozszerzenia: noref , spoofy , external noreferrer

Całkowicie wyłącz: Chnage ~ / .config / google-chrome / Default / Preferences lub ~ / .config / chromium / Default / Preferences i ustaw to:

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

Lub po prostu dodaj --no-referrers do skrótu lub w cli:

google-chrome --no-referrers

Opera:

Całkowicie wyłącz: Ustawienia> Preferencje> Zaawansowane> Sieć i odznacz „Wyślij informacje o stronie odsyłającej”

Fałszywa usługa internetowa:

http://referer.us/

Samodzielne filtrowanie proxy (fałszowanie dowolnego nagłówka):

Privoxy

Podszywanie się pod http_referer podczas korzystania z wget

„--referer = url”

Podszywanie się pod http_referer podczas używania curl

-e, --referer

Podszywanie się pod http_referer za pomocą telnetu

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)
Ten facet
źródło
Tamper Data to kolejne rozszerzenie Firefoksa, które warto sprawdzić, jeśli chcesz bawić się zmieniającymi się wartościami stron odsyłających.
Chris Hepner
Naprawdę starałem się zapamiętać jego imię. ale moja pamięć mnie zdradziła. Dzięki :)
ThatGuy
@nix Some browsers limit access to not allow HTTP_REFERER to be passedCzy mógłbyś podać przykład takiej przeglądarki i / lub rozszerzenia?
Master of Celebration
@MasterofCelebration dodał sposoby na sfałszowanie http_referer w mojej odpowiedzi.
ThatGuy
Nie używaj referer.us do fałszowania / ukrywania swojej strony polecającej! To nie działa i powoduje wyciek informacji. Jedyną działającą obecnie usługą jest ta bezpłatna usługa odsyłania do ukrywania .
Brian Smith
9

Lista BalusC jest solidna. Dodatkowym sposobem, w jaki to pole często wydaje się puste, jest sytuacja, gdy użytkownik znajduje się za serwerem proxy. Jest to podobne do przebywania za zaporą ogniową, ale jest nieco inne, więc chciałem o tym wspomnieć ze względu na kompletność.

Nocna sowa
źródło
8

Będzie również puste, jeśli zostanie użyta nowa wersja robocza standardu referrer Policy, aby zapobiec wysyłaniu nagłówka referer do źródła żądania. Przykład:

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

Chociaż Chrome i Firefox wdrożyły już wersję roboczą Polityki odsyłających, należy z nią uważać, ponieważ na przykład Chrome oczekuje no-referrerzamiast none(i nevergdzieś też widziałem ).

Joel Richard
źródło
tabela zgodności przeglądarek: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ ...
djvg
0

Zauważyłem, że referer przeglądarki jest naprawdę niespójny.

Na przykład element zakotwiczenia z atrybutem „download” działa zgodnie z oczekiwaniami w przeglądarce Safari i wysyła osobę odsyłającą, ale w przeglądarce Chrome strona odsyłająca będzie pusta lub w dziennikach serwera WWW będzie oznaczony „-”.

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

W Chrome jest uszkodzony - nie wysłano żadnego recenzenta.

jmoz
źródło