Il y a deux aspects à cela; le premier, comme vous l'avez mentionné, est d'empêcher les attaques par force brute.
Pour cela, n'importe quel nombre d'essais devrait faire - 3, 5, 20, 2000 ... avec une politique de mot de passe appropriée (longueur + complexité + ...) donnant un espace clé suffisamment grand, tout type de limitation (X nombre d'essais par heure) garantira que le forçage brutal de l'espace entier prendrait plusieurs décennies. (Faire le calcul).
Même si - et cela devrait être une exigence - le verrouillage n'est que temporaire, et après une courte période, il se déverrouille automatiquement.
Ainsi, le nombre d'essais avant le verrouillage est arbitraire.
Cependant, il y a un autre problème, plus subtil et non mathématique en jeu ici:
Cela n'a tout simplement pas de sens pour un seul utilisateur de mettre à plusieurs reprises une erreur mot de passe 2000 fois de suite.
Autrement dit, si vous choisissez arbitrairement 2000 fois, vous savez longtemps avant cela que ce n'est PAS un utilisateur légitime. Ainsi, cela se résume vraiment à ce qui est sensé sur le plan commercial et à un compromis d'analyse des risques axé sur l'entreprise.
Je pense qu'historiquement, le compromis était plus orienté vers le risque - puisque les mots de passe étaient plus courts et moins complexes, la différence de 3 ou 10 était plus grande. De plus, les gens avaient moins de mots de passe, donc ils étaient plus faciles à retenir ... Et les utilisateurs étaient plus avertis techniquement en général.
De nos jours, trois n'ont vraiment aucun sens, compte tenu de l'impact commercial. Il s'agit en fait de savoir ce qui a du sens pour votre application, quels types d'utilisateurs, à quelle fréquence ils se connectent, etc. Je recommande généralement de déterminer combien de tentatives légitimes ont échoué, puis de le doubler.
( Comme @realworldcoder l'a mentionné, PCI a choisi arbitrairement six, et si vous êtes soumis au PCI, vous n'avez pas beaucoup de décision ici. Sinon, choisissez un nombre qui a du sens pour vous.)