JeuWeb - Crée ton jeu par navigateur
Où il est question de formulaire d'authentification. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Où il est question de formulaire d'authentification. (/showthread.php?tid=971)



Où il est question de formulaire d'authentification. - ifcody - 23-03-2008

Alors pour commencer, je ne parle pas d'un formulaire classique. En effet, je ne sais pas si vous l'avez déjà remarquer, mais parfois lorsque vous vous identifiez sur un site, votre mot de passe disparé de l'inputbox avant que la page elle-méme disparraisse.
Il s'agit (pour ce que j'en ai constaté) d'un javascript qui extrait et encode votre mot de passe avant de l'envoyé par HTTP. C'est un moyen sympa de sécurisé le transfert d'un couple login/pass sans passé par https.
Donc je vous met l'exemple que j'ai trouvé dans le cms typo3 :
Une fonction javascript pour "encoder":
Code :
    function doChallengeResponse(superchallenged) {    //
        password = document.loginform.p_field.value;
        if (password)    {
            if (superchallenged)    {
                password = MD5(password);    // this makes it superchallenged!!
            }
            str = document.loginform.username.value+":"+password+":"+document.loginform.challenge.value;
            document.loginform.userident.value = MD5(str);
            document.loginform.p_field.value = "";
            return true;
        }
    }

Et le formulaire qui va avec:
Code :
<form action="index.php" method="post" name="loginform" onsubmit="doChallengeResponse(1);">                    
<input type="hidden" name="challenge" value="8a8cd22345eb9020fbedea8376ea176f" />
<input type="text" name="username" value="" class="c-username" />
<input type="password" name="p_field" value="" class="c-password" />
<input type="submit" name="commandLI" value="Log In" class="c-submit" />
</form>
Voir ici (ne faites pas trop de test, c'est la vrai page d'auth pour accéder à l'admin de typo3.org).

En gros, ce qui se passe ici, c'est que quand le gars soumet le formulaire, le javascript créé un nouveau champs caché dans le formulaire et dans lequel il met le hash md5 de votre login, votre pass et une clé d'auth tout concaténé. Et ensuite il vide bien le champs password du formulaire pour pas que votre mot de pass soit transmit en claire.

Alors pour ceux qui on pas compris, mon very first diagramme fait avec Dia:
[Image: diagramme1ed1.th.jpg]
A gauche le shéma avec l'utilisation d'HTTPS (donc sécurisé) et à droite le shéma avec du HTTP, mais avec la fonction javascript en plus pour "crypter" le pass (on peut imaginé que la fonction serat un md5 par exemple). Bien sur là vous n'avez que la partie client, mais le reste n'est pas trés dure à imaginé Wink

Voila, j'aimerais savoir ce que vous pencez de ce systéme, si vous avez de meilleur solutions, des idées, etc...


RE: Où il est question de formulaire d'authentification. - Sephi-Chan - 23-03-2008

C'est une bonne solution pour sécuriser le mot de passe de ceux qui activent Javascript. Notre prof de sécurité nous disait de le faire quand c'était possible, que ça ne nous coûtait pas grand chose tout en sécurisant les utilisateurs de notre site.

Concernant le traitement côté serveur, je suppose que l'on vérifie si le champ hidden existe (ça voudra dire qu'il a été généré par Javascript), si oui, on compare le hash directement, sinon on hash le mot de passe clair (comme on fait d'habitude, et ici quand Javascript est désactivé).

Je rajoute un lien complémentaire pour ceux qui sont tentés : MD5 et SHA1 en Javascript, d'autres adaptations des algorithmes de hash sont disponibles (Google est notre amis).


Sephi-Chan