bonjour,
En cherchant un paquet npm pour chiffrer les mot de passe de ma base de données, j'ai constater que brcyptjs marche aussi cotés navigateur. Je comptais le faire cotés serveur par habitude mais du coup je me demande si il y a des contreindications à le faire cotés client.
J'espère avoir été clair
Merci d'avance
D'un point de vue de la sécurité, cela n'apporte rien. Si la connexion n'est pas chiffrée, le hash sera connu en sniffant les paquets du client au serveur. Il suffira donc à l'attaquant de récupérer la valeur du hash et de la renvoyer. Si la connexion est chiffrée, cela n'est pas possible (le contenu du paquet n'est pas lisible sans déchiffrement). Mais cela n'apporte pas plus de sécurité que si tu envoyais le mot de passe (vu qu'il sera chiffré durant la communication chiffrée).
L'idée du salt est malheureusement mauvaise utilisée comme ça. En effet, quand le client demandera le salt, celui-ci sera passé en clair. L'attaquant connaitra donc le salt. Le salt n'est utile que si c'est un secret. Or ici, le client aura toutes les informations nécessaires pour le lire (même si envoyé chiffré, il faudra bien le déchiffré). Donc non, le salt comme ça ne protège en rien contre les attaques dictionnaires.
Les avantages de hash coté client sont:
En conclusion: ceci n'augementera pas la sécurité de ton site.
Tous les navigateurs maintenant intègrent le Web Crypto Api
on y trouve toutes les méthodes de chiffrement.
Donc si on veut chiffrer son MP côté client (hors https) on peut passer par un système de clé privée / clé publique comme RSA.
le client chiffre le MP (salé) avec la clé publique et le serveur le déchiffre avec sa clé privée.
re,
merci à vous 3 pour votre réactivités et vos réponses.
je ne connaissais pas le Web Crypto Api, je pense que je vais me pencher la-dessus. A part mdn ou w3c, la doc est rare.
@Huggy, si tu as un lien/tuto ou deux je suis preneur.