Ci sono due aspetti in questo; il primo, come lei dice, sta impedendo attacchi di forza bruta.
Per questo scopo, qualsiasi numero di tentativi dovrebbe fare - 3, 5, 20, 2000 ... con una password corretta (lunghezza + complessità + ...) che fornisce uno spazio abbastanza grande per la chiave, qualsiasi tipo di limitazione (numero X di tentativi all'ora) assicurerà che la forzatura bruta dell'intero spazio richiederebbe alcuni decenni. (Fai la matematica).
Anche se - e questo dovrebbe essere un requisito - il blocco è solo temporaneo e dopo un breve periodo di tempo si sblocca automaticamente.
Quindi, il numero di tentativi prima del blocco è arbitrario.
Tuttavia, c'è un altro, più sottile, non matematico problema in gioco qui:
It simply does not make sense for a single user to repeatedly put in a wrong password 2000 times in a row.
Cioè, se scegli arbitrariamente 2000, prima lungo sai che NON è un utente legittimo. Pertanto, si tratta in realtà di ciò che ha senso per gli affari e di un trade-off di analisi del rischio incentrato sull'attività aziendale.
Penso che storicamente il trade-off fosse più inclinato verso il lato del rischio - poiché le password erano più brevi e meno complesse, la differenza di 3 o 10 era maggiore. Inoltre, le persone avevano meno password, quindi erano più facili da ricordare ... E, in generale, gli utenti erano più esperti in termini tecnici.
Al giorno d'oggi, tre in realtà non hanno senso, considerando l'impatto sul business. È davvero una questione di cosa ha senso per l'app tua , quali tipi di utenti, con che frequenza di accesso, ecc. Di solito consiglio di capire quanti tentativi falliti e legittimi sono probabili, quindi raddoppiarli.
( Come menzionato da @realworldcoder , PCI ha scelto arbitrariamente sei, e se sei soggetto a PCI non hai molta decisione qui, altrimenti scegli un numero che abbia senso per te.)