web-dev-qa-db-fra.com

La méthode php md5 () est-elle sécurisée? Peut-il être utilisé pour les mots de passe?

Donc, en exécutant un script php, les valeurs de formulaire sont envoyées au serveur, puis elles sont traitées.

Si vous voulez stocker un mot de passe dans votre base de données, vous voulez qu'il soit un hachage cryptographique (votre côté client est donc sécurisé, pouvez-vous générer un md5 en utilisant php en toute sécurité (sans envoyer l'utilisateur: paire de mots de passe en clair), ou existe-t-il une méthode standard alternative pour ce faire, sans que le mot de passe non chiffré ne quitte la machine cliente?

Désolé si c'est une question stupide, je suis un peu nouveau pour ça.

Je pense que cela peut être fait d'une manière ou d'une autre en utilisant https, et sur cette note, si la page de connexion d'un site n'utilise pas https, cela signifie-t-il que, même si le stockage en base de données est sécurisé, le transport ne l'est pas?

1
awiebe

La PHP fonction MD5() est sécurisée. Mais utiliser MD5() pour le hachage des mots de passe n'est pas sécurisé. Les pirates ont créé tables Rainbow qui sont des hachages MD5 de tous les mots de passe de 12 caractères maximum. Ainsi, au lieu d’avoir à essayer de "déchiffrer" un hachage, il leur suffit de faire une requête SQL rapide et elle est cassée.

C'est pourquoi vous devriez utiliser des algorithmes de hachage plus puissants tels que SHA256 ou SHA512 avec un sel . Ou, mieux encore, tilisez bcrypt , ce qui est intentionnellement lent, ce qui rend les tentatives de force brute difficiles à casser un mot de passe.

Ou, mieux encore, utilisez une solution éprouvée. Essayez phpass d'Openwall . Il est utilisé par Wordpress, Drupal, etc.

Pour votre information, SSL ne chiffre que la transmission des informations via HTTP. Il ne hasch ou rien crypté de façon permanente.

1
John Conde