lundi 21 mars 2011

Sécurité des "Mots de passes" dans les formulaires html

Petit mémo sur la méthodologie du transfert des mots de passes sur un projet WEB.

Vous etes familier du web, et vous en etes pas a votre premier projet avec des comptes utilisateurs. Savez vous proprement utiliser l'encodage des mots de passes md5 par exemple?

Pour bien comprendre le fonctionnement il ne faut pas oublier que l'Internet est avant toute chose un réseau et toutes les données transitant dans les cables peuvent etre interceptés relativement facilement. C'est pour cela que l'on utilise les encodage des mots de passe.

En effet l'idée est d'encoder le mot de passe coté client (en javascript par exemple) de manière a ce que le mot de passe qui transite dans le réseaux soit sous forme encodée.

On observe aussi le phénomène suivant: Les personnes ayant un très grand nombre de mot de passes utilisent souvent le meme doublon login / mot de passe sur plein de sites. N'oubliez pas qu'un développeur peu expérimenté peut comprommetre la confidentialité de votre mot de passe.

Attention la mauvaise méthode etant de transferer le mot de passe en clair et de l'encoder en md5 avant l'insertion en base. Cela nous fait perdre quasiment tout l'interet de l'encodage du mot de passe.

2 commentaires:

  1. Erreur de débutant: si c'est le client qui envoit son mot de passe hashé en MD5 et que le serveur ne fait que comparer cette empreinte avec celle qu'il a en base, ça revient à transmettre le mot de passe en clair.
    En effet, connaître la valeur du hash revient à connaître le mot de passe.

    De plus on ne parle pas "d'encoder" du MD5. Quelque chose qui est encodé doit pouvoir être décodé et ce n'est pas le cas du MD5 de par même sa nature de fonction à sens unique.

    MD5 n'est d'ailleurs plus considéré comme une fonction de hashage cryptographique sûr mieux vaut utiliser des empreintes de type SHA.


    Pourquoi vouloir réinventer la roue, utiliser SSL/TLS pour avoir une transmission des données sécurisée.

    RépondreSupprimer
  2. La bonne méthode est donc JUSTEMENT de transmettre le mot de passe en clair au serveur qui le hash avant l'insertion en base CAR si on utilise HTTPS toute la transmission sera chiffrée et le mot de passe en clair ne sera visible que par le destinataire.

    RépondreSupprimer