2010-08-05 3 views
1

J'ai un script embed qui fait simplement ceci:se referer du site qui demande votre js fichier

document.write(unescape('%3Cscript src="' + mp_protocol + 'blah.cloudapp.net/js?location="' + window.location +' type="text/javascript"%3E%3C/script%3E')); 

Comme vous pouvez le voir maintenant l'URL de la page Web qui est Embedding le code est passé à l'aide window.location. Mais cela peut facilement être modifié par le client.

Je voulais savoir si je pouvais obtenir le référant au lieu de passer l'URL. Je n'étais pas sûr si l'information de référence serait passée puisque ce manuscrit est embarqué? (Oui, vous pouvez aussi fausser les referrers ... mais c'est un peu plus d'effort que je pense que la plupart des gens voudront).

Répondre

2

Le navigateur envoie généralement un en-tête "Referer" (sic) pour les demandes de script contenant l'URL de la page contenant le lien de script, quelle que soit la manière dont cet élément de script a été créé.

Ceci est accessible en vérifiant la variable HTTP "Referer" (notez l'orthographe inhabituelle). L'idée est que vous pouvez vérifier cette variable et voir si elle fait référence à une partie de votre site.

Notez que cette variable n'est pas toujours précise; un utilisateur peut choisir de protéger sa vie privée en ne lui envoyant pas d'en-tête référent (en utilisant une sorte d'outil de confidentialité dinky) et il peut même modifier son navigateur pour envoyer ce qu'il veut dans ce champ. Il ne devrait donc pas être utilisé pour l'authentification, sauf si vous tenez également compte du fait que même un utilisateur légitime peut l'avoir laissé vide ou y avoir placé une chaîne arbitraire.

+0

l'OP n'est pas sur php. – Reigel

+0

oh ouais, vous avez raison! – thomasrutter

Questions connexes