Bonjour,
Je reviens à mes moutons mais ton dernier message AB c'est difficile et j'ai besoin de te poser quelques questions de compréhension.
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.
Là où j'ai du mal à suivre, c'est quand tu parles du contenu du post dans le cas de l'utilisation d'un grain de sel fixe par utilisateur.
1. Il s'agit du hashage de la concaténation d'un grain de sel fixe avec un mot de passe que l'on a en bdd, n'est-ce pas?
2. C'est-à-dire que si l'on considère la concaténation d'un grain de sel fixe avec un mot de passe comme un simple mot de passe
un peu plus compliqué que d'ordinaire, une rainbow table suffit à décrypter l'ensemble, c'est bien ça?
Mais si quelqu'un arrive à ce stade, et qu'il envoi la valeur de la concaténation du mot de passe + grain de sable décrypté via le formulaire,
cet ensemble sera à nouveau concaténé au grain de sable avant d'être crypté, et à cause de cette deuxième concaténation au grain de sable,
et à cause de ça seulement, la valeur cryptée produite différera de la valeur hashée qui se trouve en bdd.
3. Tu veux dire que cette personne pourrait trouver le moyen de contourner cette deuxième concaténation au grain de sable?
En plus il y a un truc que je ne comprends pas.
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?
L'ensemble hashage de mot de passe + grain de sable aléatoire en bdd ne sera jamais, sauf cas rarissime, égal
à hashage mot de passe posté + grain de sable aléatoire car le grain de sable aléatoire d'aujourd'hui et celui d'hier étant
différents, les deux valeurs hashées le seront aussi. Je ne vois donc pas comment l'utilisateur peut être reconnu
avec un grain de sable aléatoire.
Quant à
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
Alors là je patauge
Il est bien question d'envoyer le hashage du mot de passe + grain de sel vers la bdd et pour cela l'utilisateur doit bien rentrer son mot de passe.
Ce mot de passe est juste en mémoire vive et sur l'ordinateur de l'utilisateur seulement.
4. Pourquoi ai-je besoin de javascript?
=> à propos il a l'air très compliqué le code javascript que tu m'a montré!!
Je te remercie pour tout, c'est juste que c'est un peu costaud

!!
Mais je tiens bon
5. Puis-je poser une cinquième question (toujours en relation avec le message, mais avec le début du message)?
Ca commence à faire quelques questions mais ça m'aiderait vraiment beaucoup
C'est à propos de htmlentities (début de ce message).
Pour éviter de créer des failles xss, j'ai mis des htmlentities lors que j'ai des sorties navigateur.
A un endroit dédié à du texte, j'ai donc remplacé:
<textarea rows="4" cols="100" name="$ma_variable" maxlength="2000"><?php echo $ma_variable; ?></textarea>
par:
<textarea rows="4" cols="100" name="$ma_variable" maxlength="2000"><?php echo htmlentities($ma_variable, ENT_QUOTES, 'UTF-8'); ?></textarea>
Mail il apparaît un problème: les entités HTML apparaissent à l'écran, par exemple le é devient é et c'est la fonction qui crée ce changement.
Si j'enlève htmlentities j'ai bien alors é au lieu de é mais je veux éviter les failles xss.
C'est donc le navigateur qui ne fait plus le travail d'interpétation si je suis la logique de xTG:
Il reçoit des octets, qu'il convertie avec une table ASCII en caractère puis il interprète ces caractères avec la définition de la syntaxe HTML.
Et cette syntaxe prévoit les "entities HTML" qui commencent par '&' et qui se terminent par ';'.
Pourquoi "ne bosse t'il plus?"
Je me retrouve donc avec du code source en sortie qui n'est pas converti par une table ASCII