Sans tenir compte de la question de savoir si nous devons effectuer ce changement ou non (les circonstances sont légèrement complexes et probablement couvertes par mon accord de confidentialité), notre client souhaite que nous exigions que les visiteurs du site que nous construisons proviennent d'un autre de ses sites. Si un utilisateur nous arrive d'un autre site, il doit être dirigé vers l'écran de connexion de cet autre site.
Il semble que le moyen le plus simple de le faire soit d'utiliser mod_rewrite
pour rediriger tout ce qui a un référent qui n'est ni notre site ni cet autre.
Ma réflexion actuelle est la suivante
Sur httpd.conf
RewriteMap deflector txt:/path/to/deflector.map
RewriteCond %{HTTP_REFERER} !=""
RewriteCond ${deflector:%{HTTP_REFERER}|NOT-FOUND} =NOT-FOUND
RewriteRule ^ http://www.theothersite.com/login.jsp [R=307,L]
Sur deflector.map
//www.oursite.com/ -
//oursite.com/ -
//www.theothersite.com/ -
//theothersite.com/ -
Cela nous permettrait d'étendre la liste des "référents autorisés" assez facilement, ce qui semble être une bonne idée.
J'ai donc trois questions :
- Est
mod_rewrite
(que nous utilisons déjà abondamment) la meilleure façon de procéder ? - Si c'est le cas, alors c'est un
307 Temporary Redirect
réponse la meilleure façon de le gérer ? - Comme je ne suis pas principalement un développeur / administrateur LAMP, ai-je fait des fautes de frappe stupides dans ces règles de réécriture ? ;o)
J'ai l'impression que 307 Temporary Redirect
o 403 Forbidden
sont les plus appropriées codes de statut et je suppose que c'est A Bad Thing™ d'envoyer un Location:
avec un en-tête de redirection 4xx
réponse.
Tout ça a un sens ?
Editar: Est-ce que les recherches de cartes sont des cas- sur sensible par défaut ? Dois-je me préoccuper de la casse ici ?
Edit 2 : Les recherches de cartes sont-elles une recherche regex ou une correspondance de clé entière ? Si la carte contient www.foo.com
y el Referer:
L'en-tête se lit comme suit http://www.foo.com/bar.php
Est-ce que ça correspondra ?
0 votes
Pensez à ce qui va se passer ici lorsqu'un navigateur ne renvoie pas un référent. De plus, vous ne pouvez pas envoyer une réponse de localisation avec un code d'état 4xx.
0 votes
@symcbean Ouais, c'est pour ça que j'ai
RewriteCond %{HTTP_REFERER} !=""
là d'abord. Et merci, je ne pensais pas que je pouvais envoyer uneLocation:
avec un en-tête4xx
code.