Que pense tu de ça:
Tu écris une fonction telle que:
1 2 3
| function magic_hash($str) {
return sha1("aiQoaPdmalFiquENaGpaoQL".$str);
} |
(La longue chaîne est arbitraire et doit rester secrète). Tu implante cette simple fonction sur tes deux serveurs, et lors du passage du serveur 1 au serveur 2 tu passe une chaîne dans l'URL du type:
?user=(pseudo de l'user)&hash=(magic_hash(user))
Ainsi le mot de passe ne transit pas en clair mais si le serveur 2 veut le checker il n'aura qu'à vérifier que le hash donné en get est bien équivalent à magic_hash(user).
Notons que la connaissance magic_hash(user) serait déja une preuve puissante que le client est passé par le serveur 1, car le serveur 1 refusera de calculer cette valeur si il n'est pas identifié, et que si un client voulait calculer le hash il serait obligé de connaître la chaîne secrète de la fonction citée ci dessus.
En attendant si quelqu'un intercepte l'URL de login au second serveur (le hash pour un user) il pourra quand même s'identifier sur le compte d'une autre personne avec juste ce système (si tu veux absolument une parade à ça on peut en mettre une en place facilement :p). Mais il sera impossible pour quelqu'un de s'identifier sur le compte d'une personne arbitraire (de falsifier l'utilisateur)
Enfin bref je pense que tu as pigé le principe, n'hésite pas à répondre si tu trouve ça peu satisfaisant
Partager