Je vais écrire un nouveau message pour le point 5 qui est un peu à part.
Le grain de sel est dans la table, si tu as le nom de l'utilisateur tu peux récupérer son grain de sel.Si on crée une concaténation automatique entre un mot de passe posté et un grain de sel aléatoire,
comment l'utilisateur pourrait-il être identifié comme ayant saisi le bon mot de passe?
Pouvez-vous m'expliquer où il veut en venir avec l'avant-dernière phrase:Oui, juste une précision : le grain de sable envoyé dans le formulaire doit être différent à chaque envoi du formulaire (ce qui est le cas dans mon exemple plus haut). Sinon, sans même pouvoir connaître le mot de passe, on pourrait néanmoins s'authentifier en renvoyant simplement le contenu du post. Si donc tu as un sel fixe pour chaque visiteur pour sauvegarde en bdd par exemple, il n'est pas suffisant à lui seul pour assurer l'unicité de la connexion.
Donc avec un simple hash du mot de passe en bdd, le javascript doit renseigner le formulaire avec quelque chose comme :
TOUT SÉLECTIONNER
hash(sel_unique_formulaire.hash(mot_de_passe))
et avec hash + sel en bdd :
TOUT SÉLECTIONNER
hash(sel_unique_formulaire.hash(mot_de_passe.sel_unique_visiteur))
Et dans tous les cas javascript doit bien évidemment supprimer le contenu du champ "mot_de_passe" du formulaire avant l'envoi vers le serveur sinon tout cela ne sert à rien
EDIT : la seconde hypothèse suppose de devoir faire une requête ajax pour connaître le sel du visiteur en bdd en fonction de son login
Ca à l'air très important!!Et dans tous les cas javascript doit bien évidemment supprimer le contenu du champ "mot_de_passe" du formulaire avant l'envoi vers le serveur sinon tout cela ne sert à rien![]()
Si tu parles de cet exemple de code le code javascript à comprendre est juste celui mentionné ci-dessous, le reste est une fonction de haschage sha 256 :il a l'air très compliqué le code javascript que tu m'a montré!!
Effectivement la méthode "crypt" de php est très pratique pour protéger ses mots de passe en bdd mais il n'est pas possible d'utiliser ce système avec la méthode d'authentification de sel aléatoire concaténé avec le mot de passe côté client. En effet on ne pourrait pas faire de comparaison côté php avec le hash enregistré en bdd qui est construit avec un sel embarqué.Sur le mot de passe
C'est pourquoi j'ai signalé ce site :
le sel est embarqué dans le mot de passe codé, et ce sont les procédures prévues qui créent le mot de passe codé enlehachant plusieurs fois et qui en assurent la vérification.
On 'a ainsi aucun sel à stocker
Cette fonction embarque le sel, qui est tiré aléatoirement,dans le mot de passe codé, et c'est cette chaine de caractères qui est stockée/ en Bdd. Nulle part le sel ne parait en clair, et le sel est différent pour chaque mot de passe crypté.J'interviens après la bataillemais j'ai trouvé ceci
http://www.openwall.com/phpass/
et là:
http://us2.php.net/manual/fr/function.crypt.php
remarque utiliseteur n 2
OK t'as comprisMerci beaucoup pour 3)
J'ai bien compris![]()
Il me reste plus qu'un truc à comprendre:
c'est l'intérêt et l'utilisation d'un grain de sel aléatoire,
par rapport à un grain de sel fixe par utilisateur.
Si je peux revenir là-dessus:
dans ma bdd je n'aurai jamais de grain de sel aléatoire car
lors de la comparaison entre les données saisies et celles en bdd
je n'aurai jamais d'égalité du fait de l'aléa créé par le grain de sel aléatoire.
C'est juste?
Par contre, les données de la bdd sorties sur un fichier php et concaténées
au même grain de sel aléatoire que celui utilisé pour la concaténation
des données postées permet d'obtenir l'égalité s'il y a l'égalité,
car le grain de sel aléatoire utilisé dans les deux cas c'est le même.
C'est juste?