2010-09-02 4 views
2

Nous nous inscrivons à une ressource en ligne qui utilise http-referer comme authentification (mauvaise idée, je sais) pour prouver que la requête provient de notre intranet (adresse IP n'est pas disponible pour cela comme il y a un proxy de niveau supérieur).Changement de référenceur http via une redirection

Malheureusement, il se peut que leur système nécessite une URL de référence spécifique plutôt que de prendre le domaine. Cela signifie que lorsque nous souhaitons créer un lien vers la ressource à partir d'une page différente, nous devons soit enregistrer une autre URL avec eux, soit créer un lien vers une page d'accueil à laquelle ils doivent cliquer de nouveau.

Si nous devons aller dans cette voie, je voudrais rendre aussi imperceptibles que possible et ainsi se demandait quelle est la meilleure approche serait d'atteindre les objectifs suivants:

  1. http://intranet/somerandomurl a un lien vers
  2. http://intranet/AuthorisedUrl qui doit être le referrer à
  3. http://externalsite/

est-il possible de le faire sans littéralement maki les gens cliquent sur un lien? (La grande majorité des navigateurs seront IE6 ou IE7 si cela peut aider, si certains doivent cliquer sur le lien mais je peux utiliser JS pour la plupart je suis d'accord avec ça).

Répondre

2

Mettez ce code sur le lien 2. Pour ceux avec JavaScript activé,

<script type="text/javascript"> 

window.location = "http://example.com/" 

</script> 

Cela les rediriger vers http://example.com/ dès qu'il exécute. Mettez cela aussi tôt que possible dans le <head>, de sorte que la redirection se produise aussi tôt que possible dans le chargement de la page

Ensuite, il suffit de mettre un lien manuel sur la page pour ceux avec JavaScript désactivé.

De toute façon, le lien 2 sera le référant pour externalsite.

(caveat. Ceci est vraiment, vraiment méthode non sécurisée d'authentification)


EDIT: On dirait qu'il ya un problème connu avec certaines versions d'IE ne passe pas un en-tête Referer après javascript réoriente. Voici la solution de contournement: http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

+0

Je pensais que ce serait JS côté client. Y a-t-il des problèmes d'incohérence de navigateur avec ceci, avec certains changeant le referer comme voulu mais d'autres pas? (et ouais je suis d'accord avec cette mise en garde mais ce n'est pas notre système donc rien que je puisse faire à ce sujet). – Chao

+0

Il ne devrait pas y avoir d'incohérence de navigateur, mais vous pouvez le tester ici: http://htmlto.com/redirect/1.html. En cliquant sur le lien, vous arriverez à 2.html, qui redirigera Javascript vers 3.php, qui est configuré pour renvoyer le HTTP_REFERER. Il devrait dire 2.html; si jamais il dit 1.html, vous avez une incohérence de navigateur. – Yahel

+0

Je suis corrigé; IE ne transmettra pas le http_referer d'une redirection JavaScript; voir mon édition pour le correctif. – Yahel

Questions connexes