In quali casi HTTP_REFERER sarà vuoto


163

So che è possibile ottenere un HTTP_REFERER vuoto. In quali circostanze succede? Se ne ottengo uno vuoto, significa sempre che l'utente l'ha cambiato? Ottenere uno vuoto equivale a ottenerne uno nullo? e in quali circostanze ottengo anche quello?


8
Quando il client non ne invia uno.
Ignacio Vazquez-Abrams,

Risposte:


277

Sarà / potrebbe essere vuoto quando l'utente finale

  • inserito l'URL del sito nella barra degli indirizzi del browser stesso.
  • visitato il sito da un segnalibro gestito dal browser.
  • visitato il sito come prima pagina nella finestra / scheda.
  • fatto clic su un collegamento in un'applicazione esterna.
  • passato da un URL https a un URL http.
  • passato da un URL https a un altro URL https.
  • è installato un software di sicurezza (antivirus / firewall / ecc.) che rimuove il referrer da tutte le richieste.
  • è dietro un proxy che rimuove il referrer da tutte le richieste.
  • visitato il sito in modo programmatico (come, curl ) senza impostare l'intestazione del referrer (searchbot!).

32
Potresti voler aggiungere "quando l'utente passa da una pagina protetta (HTTPS) a una pagina non protetta".
John Pick

4
"visitato il sito come prima pagina nella finestra / scheda." Anche se è stato facendo clic su un collegamento e aprendolo in una nuova finestra / scheda ?? Sei sicuro? Sarebbe un comportamento molto sbagliato del browser
matteo

Vedi anche qui stackoverflow.com/questions/21922143/… per le eccezioni a questo
GetFree

4
msgstr "passato da un URL https a un URL https diverso". Sei sicuro di questo? : \
Oscar Mederos il

5
Per impostazione predefinita, il passaggio da un URL HTTPS a un URL HTTPS diverso imposta il riferimento completo. Questa politica di default può tuttavia essere ignorata. w3.org/TR/referrer-policy
Dhaval Kapil,

34

HTTP_REFERER - inviato dal browser, indicando l'ultima pagina visualizzata dal browser!

Se ti fidi di [HTTP_REFERER] per qualsiasi motivo importante, non dovresti, poiché può essere simulato facilmente:

  1. Alcuni browser limitano l'accesso per non consentire il passaggio di HTTP_REFERER
  2. Digitare un indirizzo nella barra degli indirizzi non passerà HTTP_REFERER
  3. aprire una nuova finestra del browser non passerà HTTP_REFERER, perché HTTP_REFERER = NULL
  4. ha un componente aggiuntivo del browser che lo blocca per motivi di privacy. Alcuni firewall e AV lo fanno.

Prova questa estensione firefox, sarai in grado di impostare le intestazioni che desideri:

@Master of Celebration:

Firefox:

estensioni: refspoof , refontrol , modifica delle intestazioni , nessun riferimento

Disabilita completamente: l'opzione è disponibile in about: config in "network.http.sendRefererHeader" e si desidera impostare questo su 0 per disabilitare il passaggio dei referer.

Google chrome / Chromium:

estensioni: noref , spoofy , noreferrer esterno

Disabilita completamente: Chnage ~ / .config / google-chrome / Default / Preferences o ~ / .config / chromium / Default / Preferences e imposta questo:

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

O semplicemente aggiungi --no-referrers al collegamento o in cli:

google-chrome --no-referrers

Musica lirica:

Disabilita completamente: Impostazioni> Preferenze> Avanzate> Rete e deseleziona "Invia informazioni referrer"

Servizio web di spoofing:

http://referer.us/

Proxy di filtro autonomo (spoof qualsiasi intestazione):

Privoxy

Spoofing http_referer quando si utilizza wget

'--Referer = url'

Spoofing http_referer quando si usa l'arricciatura

-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)

Tamper Data è un'altra estensione di Firefox che vale la pena dare un'occhiata se si desidera giocare con la modifica dei valori dei referrer.
Chris Hepner,

Stavo provando davvero a ricordare il suo nome. ma la mia memoria mi ha tradito. Grazie :)
ThatGuy

@nix Some browsers limit access to not allow HTTP_REFERER to be passedPotresti per favore dare un esempio a tale browser e / o estensione?
Master of Celebration,

@MasterofCelebration ha aggiunto modi per falsificare http_referer nella mia risposta.
ThatGuy

Non usare referer.us per falsificare / nascondere il tuo referrer! Non funziona e perde le tue informazioni. L'unico servizio funzionante in questo momento è questo servizio di referrer nascondi gratuito.
Brian Smith,

9

L'elenco di BalusC è solido. Un altro modo in cui questo campo appare spesso vuoto è quando l'utente si trova dietro un server proxy. Questo è simile all'essere dietro un firewall ma è leggermente diverso, quindi ho voluto menzionarlo per completezza.


8

Sarà inoltre vuoto se si utilizza la nuova bozza standard della Politica referrer per impedire che l'intestazione del referer venga inviata all'origine della richiesta. Esempio:

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

Sebbene Chrome e Firefox abbiano già implementato una versione bozza della Politica sui referrer, dovresti fare attenzione perché ad esempio Chrome si aspetta no-referrerinvece none(e ho visto anche neverda qualche parte).


tabella di compatibilità del browser: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
djvg

0

Ho trovato l'implementazione del referer del browser davvero incoerente.

Ad esempio, un elemento di ancoraggio con l'attributo "download" funziona come previsto in Safari e invia il referer, ma in Chrome il referer sarà vuoto o "-" nei registri del web server.

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

È rotto in Chrome: nessun referer inviato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.