Le principal problème est que les mots de passe incorrects doivent être stockés de manière à pouvoir être affichés ultérieurement aux utilisateurs. Ce qui, comme votre développeur l'a souligné, signifie qu'ils ne peuvent pas être d'abord hachés cryptographiquement. Le résultat est que vous les stockez sous forme de texte brut (mauvais) ou chiffré (mieux mais normalement pas recommandé).
Le plus grand risque est si cette base de données de mots de passe invalides devient accessible aux attaquants. Soit ils compromettent le serveur, effectuent une injection SQL ou le récupèrent d'une autre manière. Plutôt que de déchiffrer les mots de passe principaux, qui, espérons-le, sont fortement hachés et donc des cibles plus difficiles, ils pourraient décider de compromettre les comptes en utilisant les informations de l'historique des mots de passe invalides. Soit ils accèdent facilement aux mots de passe en texte brut, soit ils tentent de trouver la clé de chiffrement qui leur permet de déchiffrer les mots de passe en texte brut.
Une source courante d'échecs de connexion est les fautes de frappe mineures lors du processus de saisie du mot de passe. Donc mon mot de passe est Muffins16 mais je tape mUFFINS16 car mon verrouillage des majuscules est activé. Ou Muffins166 parce que j'ai appuyé deux fois sur la même touche. Ou Muffina16 parce que mon doigt a frappé la mauvaise touche. Comme vous pouvez le voir, ces variantes sont suffisamment proches de l'original pour que les attaquants puissent probablement déterminer le mot de passe valide à partir de mots de passe non valides en essayant quelques modifications mineures ou en comparant des mots de passe incorrects à des mots ou des noms probables du dictionnaire.
Ce problème est exacerbée parce que la plupart des gens utilisent des choix de mot de passe similaires à ces formats et non des chaînes aléatoires. Il est plus difficile pour un attaquant d'identifier la faute de frappe si votre mot de passe invalide est V8Az $ p4 / fA, bien qu'il soit encore beaucoup plus facile d'essayer des variantes de cela, puis de le deviner sans aucune information.
Un autre risque est que les utilisateurs ne se souviennent pas lequel de leurs mots de passe ils ont utilisé sur ce site afin d'essayer les mots de passe courants. Maintenant, ce site est soudainement une cible plus importante car un attaquant pourrait être en mesure non seulement de compromettre le compte d'un utilisateur là-bas, mais aussi sur d'autres sites avec la liste pratique de mots de passe "invalides".
Vous pouvez atténuer certains de ces risques en effaçant le stockage des mots de passe invalides immédiatement après leur affichage après une connexion valide. Cela devrait limiter la fenêtre d'opportunité pour un attaquant d'accéder aux données et d'en profiter.
La question que vous devriez probablement poser à votre client est de savoir comment il prévoit que les utilisateurs bénéficieront de voir leurs mots de passe invalides. Est-ce pour que les utilisateurs puissent identifier comment ils ont mal saisi leur mot de passe? Les fautes de frappe ne sont pas intentionnelles, il est donc peu probable que leur montrer leur erreur améliore les futures tentatives de connexion. Ainsi, les utilisateurs peuvent identifier un attaquant essayant de deviner leurs mots de passe? Des commentaires similaires peuvent être fournis en indiquant la date, l'heure, l'adresse IP / la géolocalisation ou d'autres informations pour les tentatives non valides sans le mot de passe tenté. Ainsi, les utilisateurs savent-ils qu'ils ont foiré lors de la saisie du mot de passe et ne blâment pas le système de connexion du site? Cela semble être le seul à avoir du mérite et je ne suis pas sûr qu'il fournisse suffisamment de valeur pour justifier le risque.
Je suppose qu'une fois que vous aurez mieux compris ce qu'ils essaient d'accomplir avec cette fonctionnalité, vous pouvez suggèrent probablement des alternatives plus sûres.