2009-05-25 7 views
2

J'ai utilisé referrer auparavant dans foo.php pour décider si la page iframing foo.php est d'une URL particulière. (En utilisant $_SERVER['HTTP_REFERER'])dans quelle situation le HTTP_REFERER ne fonctionne-t-il pas?

Il est avéré que la plupart du temps, il a travaillé (environ 98% du temps), mais il a également semblé comme certains utilisateurs sont arrivés la page et $_SERVER['HTTP_REFERER'] n'a pas été mis dans le fichier foo.php et donc cassé le code. [mise à jour: Ces utilisateurs ont affirmé qu'ils ont suivi le flux de la page habituelle et n'ont pas utilisé l'URL de foo.php tout seul sur le navigateur (qu'ils laissent un iframe) et les utilisateurs n'ont jamais modifié les paramètres de leur navigateur. ]

Je me demande quelles sont les raisons pour lesquelles cela pourrait arriver?

Répondre

1

Pas par défaut AFAIK, mais il est facile de l'éteindre (pour la vie privée) par ex. dans Firefox via about: config, et certains utilisateurs pourraient sûrement utiliser des navigateurs qui leur sont distribués (par exemple par leur service informatique) avec ce type de paramètre. Donc, vous devriez essayer d'éviter de compter sur REFERER pour toutes les fonctionnalités importantes (aussi parce que c'est mal orthographié, bien sûr ;-).

6

Le HTTP/1.1 RFC ne rend pas obligatoire l'envoi d'un en-tête référent HTTP. Vous ne pouvez pas faire d'hypothèses sur sa présence lors de l'écriture de code robuste; les navigateurs parfaitement conforment peuvent ne pas l'inclure.

Moreoever, le RFC conseille que « Le champ Referer NE DOIT PAS être envoyé si la demande-URI a été obtenu à partir d'une source qui ne possède pas son propre URI, comme entrée à partir du clavier de l'utilisateur » et " Nous suggérons, bien que cela ne soit pas nécessaire, qu'une interface à bascule soit fournie pour permettre à l'utilisateur d'activer ou de désactiver l'envoi des informations De et Referer ".

Ce dernier n'est pas très courant (bien que certains navigateurs aient un mode "Privé" qui répond aux exigences). Plus probable pour votre 2% est que les gens ont marqué l'URL, qui remplit le premier critère (URI obtenu à partir d'une source sans URI), et donc le navigateur n'envoie aucun referer.

Questions connexes