C'è un vantaggio in termini di sicurezza nel fornire messaggi generici che non sono stati menzionati.
Alice sta cercando di forzare un account sul server di Bob. Per i primi tentativi, Alice restituisce il messaggio "Tentativo di accesso fallito". Al prossimo tentativo ottiene "Troppi tentativi di accesso da questo indirizzo IP". Ora sa che (a) tutte le credenziali che ha provato fino a quel momento non erano valide, e (b) ha bisogno di fare qualcosa di diverso prima di fare altri tentativi.
Ma se Bob non cambia il messaggio? Alice continuerà con la forza bruta e continuerà ad ottenere il "tentativo di accesso fallito" generico su ogni tentativo anche se le credenziali sono corrette . Se dovesse capitare di provare le credenziali corrette, Bob rifiuterà il tentativo perché il limite IP è stato superato, ma Alice non saprà che questa è la ragione e dovrà trattarla come un tentativo errato (a meno che non abbia qualche altro modo di sapere che va oltre lo scopo di questa domanda). La sua unica opzione è continuare con la ricerca, ignorando se ha già individuato e spostato le credenziali corrette.
Tieni presente che questo vantaggio è sicurezza attraverso l'oscurità poiché si basa su Alice che non conosce i criteri di blocco IP di Bob. A seconda della configurazione, questa informazione potrebbe essere banale da ottenere. Ad esempio, se Alice ha accesso a un altro account sul sistema (facile se accetta la registrazione dell'account pubblico), allora può usare tentativi ed errori per vedere se un tentativo corretto alla fine viene rifiutato dopo troppi tentativi sbagliati.
Altre risposte hanno spiegato il compromesso tra sicurezza e usabilità, quindi non mi preoccuperò di ripeterlo.