Dans quels cas HTTP_REFERER sera-t-il vide

163

Je sais qu'il est possible d'obtenir un HTTP_REFERER vide. Dans quelles circonstances cela se produit-il? Si j'en ai un vide, cela signifie-t-il toujours que l'utilisateur l'a changé? Est-ce qu'obtenir un vide équivaut à en obtenir un nul? et dans quelles circonstances est-ce que j'obtiens cela aussi?

même ancien
la source
8
Lorsque le client n'en envoie pas.
Ignacio Vazquez-Abrams

Réponses:

277

Il sera / peut être vide lorsque l'utilisateur final

  • entré l'URL du site dans la barre d'adresse du navigateur elle-même.
  • visité le site par un signet géré par le navigateur.
  • visité le site en première page dans la fenêtre / l'onglet.
  • a cliqué sur un lien dans une application externe.
  • passé d'une URL https à une URL http.
  • passé d'une URL https à une URL https différente.
  • a un logiciel de sécurité installé (antivirus / pare-feu / etc) qui supprime le référent de toutes les demandes.
  • est derrière un proxy qui supprime le référent de toutes les demandes.
  • visité le site par programme (comme, curl ) sans définir l'en-tête du référent (searchbots!).
BalusC
la source
32
Vous souhaiterez peut-être ajouter «lorsque l'utilisateur passe d'une page sécurisée (HTTPS) à une page non sécurisée».
John Pick
4
"visité le site en tant que première page dans la fenêtre / l'onglet." Même si c'était en cliquant sur un lien et en l'ouvrant dans une nouvelle fenêtre / onglet ?? Êtes-vous sûr? Ce serait un très mauvais comportement du navigateur
matteo
Voir également ici stackoverflow.com/questions/21922143/… pour les exceptions à cela
GetFree
4
"passé d'une URL https à une URL https différente". Es-tu sûr de ça? : \
Oscar Mederos
5
Par défaut, le passage d'une URL HTTPS à une URL HTTPS différente définit le référent complet. Cette politique par défaut peut cependant être remplacée. w3.org/TR/referrer-policy
Dhaval Kapil
34

HTTP_REFERER - envoyé par le navigateur, indiquant la dernière page consultée par le navigateur!

Si vous faites confiance à [HTTP_REFERER] pour une raison importante, vous ne devriez pas le faire, car cela peut être simulé facilement:

  1. Certains navigateurs limitent l'accès pour ne pas autoriser la transmission de HTTP_REFERER
  2. Tapez une adresse dans la barre d'adresse ne passera pas le HTTP_REFERER
  3. ouvrir une nouvelle fenêtre de navigateur ne passera pas le HTTP_REFERER, car HTTP_REFERER = NULL
  4. a un addon de navigateur qui le bloque pour des raisons de confidentialité. Certains pare-feu et antivirus le font.

Essayez cette extension Firefox, vous pourrez définir les en-têtes de votre choix:

@Master of Celebration:

Firefox:

extensions: refspoof , refontrol , modifier les en-têtes , no-referer

Désactiver complètement: l'option est disponible dans about: config sous "network.http.sendRefererHeader" et vous voulez le mettre à 0 pour désactiver le passage du référent.

Google Chrome / Chrome:

extensions: noref , spoofy , noreferrer externe

Désactivez complètement: Chnage ~ / .config / google-chrome / Default / Preferences ou ~ / .config / chromium / Default / Preferences et définissez ceci:

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

Ou ajoutez simplement --no-referrers au raccourci ou dans cli:

google-chrome --no-referrers

Opéra:

Désactivez complètement: Paramètres> Préférences> Avancé> Réseau et décochez "Envoyer les informations de parrainage"

Service Web de spoofing:

http://referer.us/

Proxy de filtrage autonome (usurper n'importe quel en-tête):

Privoxy

Spoofing http_referer lors de l'utilisation de wget

'--referer = url'

Usurpation de http_referer lors de l'utilisation de curl

-e, --referer

Spoofing http_referer avec 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)
Ce mec
la source
Tamper Data est une autre extension de Firefox qui vaut le détour si vous voulez jouer avec des valeurs de référent changeantes.
Chris Hepner
J'essayais vraiment de me souvenir de son nom. mais ma mémoire m'a trahi. Merci :)
ThatGuy
@nix Some browsers limit access to not allow HTTP_REFERER to be passedPourriez-vous s'il vous plaît citer un exemple pour un tel navigateur et / ou extension?
Master of Celebration
@MasterofCelebration a ajouté des moyens d'usurper http_referer dans ma réponse.
ThatGuy
N'utilisez pas referer.us pour usurper / masquer votre référent! Cela ne fonctionne pas et divulgue vos informations. Le seul service qui fonctionne actuellement est ce service gratuit de référencement de masques .
Brian Smith
9

La liste de BalusC est solide. Une autre façon dont ce champ apparaît fréquemment vide est lorsque l'utilisateur est derrière un serveur proxy. Ceci est similaire à être derrière un pare-feu mais est légèrement différent, je voulais donc le mentionner par souci d'exhaustivité.

Hibou de nuit
la source
8

Il sera également vide si le nouveau projet standard de politique de référent est utilisé pour empêcher que l'en-tête de référent soit envoyé à l'origine de la demande. Exemple:

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

Bien que Chrome et Firefox aient déjà mis en œuvre une version préliminaire de la politique de parrainage, vous devez y faire attention car par exemple Chrome attend no-referrerau lieu de none(et j'ai vu aussi neverquelque part).

Joël Richard
la source
tableau de compatibilité du navigateur: developer.mozilla.org/en-US/docs/Web/HTTP/Headers
...
0

J'ai trouvé que l'implémentation du référentiel de navigateur était vraiment incohérente.

Par exemple, un élément d'ancrage avec l'attribut "download" fonctionne comme prévu dans Safari et envoie le référent, mais dans Chrome, le référent sera vide ou "-" dans les journaux du serveur Web.

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

Est cassé dans Chrome - aucun référent envoyé.

jmoz
la source