Vous avez un compromis entre l'information donnée à l'utilisateur et à la protection contre les attaques.
Si vous interrogez votre base de données en recherchant le nom d'utilisateur et le mot de passe correspondants et que cela échoue, vous pouvez seulement dire à l'utilisateur que le nom d'utilisateur ou le mot de passe est erroné. Ne pas aider s'il ne se souvient pas du login que vous avez utilisé pour vous enregistrer (était-ce "Arkh01", "arkh" ou "Arkh1").
Si vous interrogez votre base de données pour la connexion, obtenir le hachage et le sel, vous pouvez dire à l'utilisateur si la connexion est erronée ou le mot de passe. L'utilisateur est content. Mais quelqu'un attaquant votre site Web peut facilement apprendre que l'utilisateur "aa" n'existe pas, mais que l'utilisateur "ab" le fait.Comme beaucoup de sites Web donnent accès à une liste d'utilisateurs, vous pouvez presque toujours ignorer cette préoccupation.
Pour éviter la force brute, consignez le nombre de tentatives effectuées par une adresse IP ou une connexion et bloquez toute tentative ultérieure après des erreurs 5ish. De préférence bloquer l'adresse IP utilisée, pas le compte.
sur le stockage des mots de passe hachés, utiliser des sels et HMAC + sha512 en php: hash_hmac
+1 On dirait une question de méthodologie parfaitement valable pour moi. Je ne comprends pas la downview – Dathan
Parce que certaines personnes sont stupides? – animuson