Arretez De Me Rappeler Mon Mot De Passe

Posted on

Bonjour, Je vais vous expliquer ici pourquoi les sites qui me rappellent mes mots de passe m’énerve.

Tout d’abord sachez que cet article m’a été très instructif et j’invite tous les curieux à aller le voir afin de comprendre comment stocker de manière sécurisé un mot de passe dans une base de donné. Si vous avez bien lu vous aurez compris qu’on hash le mot de passe et que pour verifier l’identité d’une personne on test l’égalité du hash du mdp stocké la bdd avec le hash du mdp de ce qu’a fourni l’utilisateur via un formulaire, car le principe du hash et d’être irreversible contrairement au méthode de cryptage. A partir de la je souhaiterais comprendre comment un site est capable de m’envoyer un mail pour me rappeler mon mot de passe en clair BORDEL !!!

La règle d’or en sécurité c’est : Jamais tu ne devras pouvoir connaitre les données sensible de tes utilisateurs. Imaginez, vous faites appel à un fourgon blindé pour qu’il s’occupe de votre coffre fort, fermé à clé, double tours. Rassurez moi vous allez pas lui filer votre clé avec quand même ? Ben c’est pourtant ce que vous faites avec de nombreux site sans vous en rendre compte.

Avis aux admins :

  1. Ne stockez pas les mots de passes en clair...
  2. Ne stockez pas les mots de passe en crypté (on sais jamais ce qu'il peut arriver, et un attaquant ayant acces à la base de donné, et ayant trouvé la clé de cryptage. Ben ça peut toujours arriver).
  3. A l'inscription n'envoyez pas le mot de passe à l'utilisateur bordel, il l'a rentré lui même (2 fois). Le piratage d'adresse mail est courant, ne simplifiez pas le travail du hacker en lui balançant un mail du genre : Obj : Bienvenue sur "Nom de votre site" votre inscription c'est terminé avec succès. Msg: Récapitulatif de vos informations Nom : de Maroelle Prénom : Jean-Luc Login : jlm98 (à la limite vous pouvez le mettre) mdp : Banana ... Ne Faites Jamais ça ! (Et je l'ai déjà vu)Le prochain que je vois faire ça je l'étripe sur la place publique !
  4. Stockez vos mots de passe en Hashé et avec mieux que du md5 je vous prie (à peu de chose près : md5 = clair) je vous conseil le sha512 (ou superieur)

Maintenant le deuxième truc qui me chagrine c’est les sites qui se souviennent de mes anciens mots de passe et qui m’empeche de les réutiliser, ou pire qui me force à utiliser un mot de passe avec une syntaxe idiote du genre :

  • Obligation d'utiliser des caractères spéciaux (mais pas certains) mais pas de nombre. Je suis déjà tombé la dessus...
  • Caractères spéciaux interdits...
  • Code 4 à 6 chifres (les banques en rafollent) sois ~9999 à 999999 combinaisons possible, c'est ridicule un hacker trouve le mdp en moins d'une minute
Dans le premier cas ça veux dire que le site stocke une tripoté de mes anciens mots de passes (en hashé espérons le) et si ce site subit une attaque, je préfere que les hackers n'aient qu'un password hashé de moi et non 100 (et vive les rainbow table). Règle d'or n°2 : Moins j'en sais, mieux c'est !

Dans le deuxième cas, laissez nous choisir notre mot de passe sans limitation autre qu’une limite de taille minimum (Il y a un proverbe nain qui dit : “8 ça suffit !"). Tout en rappelant à l’utilisateur comment faire un mot de passe sécurisé (et pourquoi pas ajouter un javascript pour indiquer à l’utilisateur la force de son mot de passe). Et si ça vous vous fait délirer de faire un pavé numérique virtuelle (très utile pour contrer un key logger éventuelle) faites le bien : Faites un clavier virtuelle avec les lettres les accents, les caractères spéciaux !


Et pour finir, voici un exemple de fonction php pour eviter les failles sql et xss, et un autre pour le haschage du mot de passe :

function secure ($value,$type) { // force le typage de value, et place les séquence d'échappement afin d'empêcher les injection sql et xss
    global $mysqli;
    switch ($type) {
        case 'int':
            $value = (int)$value;
            break;
        case 'string':
            $value = (string)$value;
            $value = htmlspecialchars($value);
            $value = $mysqli->real_escape_string($value);
            break;
        default:
            $value = NULL;
            echo 'erreur de type';
            break;
    }
    return $value;
}

function hashmdp($mdp, $loginsalt){ // Fonction pour le HACHAGE du mot de passe, avec Sel et Sel Unique
    global $salt; // la variable est défini dans un fichier de config
    $mdp = $salt.$mdp.$loginsalt; //$salt complexifie le mdp de l'utilisateur, $loginsalt lui ajoute une unicité dans la base de donné
    $mdp = hash('sha512',$mdp); //hash en sha512 du mdp
    return $mdp;
}

EDIT du moi d’aujourd’hui (2021-07-11)

Un password ça ce stocke hashé. Les algo de références aujourd’hui sont :

  • argon2 / argon2i
  • PBKDF2

Et si non disponible au moins bcrypt / scrypt