La politica di blocco dell'account ha senso?

2

Ho un'applicazione web-based in cui gli utenti possono accedere con username e password.

Ho appena implementato una nuova funzionalità di blocco degli account e mi chiedevo se fosse ragionevole o l'ho completamente rovinato.

I primi 3 tentativi di accesso non validi mostrano solo il mio standard:

Incorrect user name or password

ma memorizzo ogni tentativo fallito. Per ogni ulteriore tentativo, blocco l'account per un numero sempre maggiore di secondi e lo mostro all'utente:

The logon failed because your account is blocked due to a previous unsuccessful attempt. 
Please wait a 18 seconds and try again.

Se il conteggio degli accessi fallito è maggiore di 10, blocco l'account per 120 secondi, ovvero il tempo di attesa massimo.

Se l'utente corretto ricorda finalmente la password corretta, lei deve aspettare 2 minuti, questo è non male.

Ma un hacker può provare solo una nuova password ogni 2 minuti, che diventa presto noiosa.

Dopo un accesso riuscito, il conteggio errori viene ripristinato a zero.

Tutti i numeri qui sono configurabili.

I problemi:

  • Dopo alcuni tentativi, dichiaro che un nome utente è valido, da visualizzare un messaggio diverso, ma potrei disattivarlo e mostra sempre il messaggio standard.
  • Se l'utente reale tenta di accedere mentre qualcun altro sta tentando di farlo rompere nel suo account, lei non sarà in grado di accedere, quindi questo è un negazione del servizio. Ma due minuti dopo che l'attaccante si è arreso, può accedere senza dover chiamare l'helpdesk.
posta Peter Hahndorf 16.02.2014 - 18:04
fonte

3 risposte

2

Sono d'accordo con te sui difetti, ma sembra che sia sulla buona linea.

After a few attempts, I disclose that a username is valid, by displaying a different message, but I could turn that off as well and always just display the standard message.

Sì, dovresti eseguire lo stesso comportamento anche con nomi utente non validi. Il tuo sito dovrebbe simulare la politica di blocco per questi utenti. Ciò contribuirà a proteggere da Enumerazione del nome utente .

If the real user tries to log on while someone else is trying to break into her account, she wont be able to log in, so this is a denial of service. But two minutes after the attacker gives up, she can log in without having to call the help-desk.

Hai ragione in questo è un attacco DOS contro l'utente. Forse dovresti semplicemente valutare i tentativi di limite dopo i tentativi falliti di X . Un ritardo artificiale di 5 secondi interromperebbe la forza bruta ma consentirebbe a un utente legittimo di accedere. I tentativi devono essere misurati tramite nome utente e indirizzo IP (separatamente) e il throttle deve trovarsi tra thread per impedire a un utente malintenzionato di inviare richieste in parallelo. Ancora una volta, la stessa logica dovrebbe applicarsi anche ai nomi utente non validi.

    
risposta data 17.02.2014 - 14:34
fonte
0

Una politica di blocco degli account ha senso dal momento che può aumentare la complessità della violazione di un account in quanto richiede più tempo per forzare l'account. Suggerirei di non trasmettere che il nome utente è valido. Se il tentativo di accesso fallisce ... fallisce ... L'output del messaggio relativo a un nome utente corretto potrebbe essere utile per un utente malintenzionato. Il rifiuto se il servizio a un utente legittimo è sfortunato, ma se l'utente chiama l'help desk potrebbe essere utile per avvisare gli amministratori di un tentativo di entrare in un account. Per me sembra ragionevole ma non sono sicuro quali siano le vostre esigenze. In generale, ritengo che le politiche di blocco siano una buona idea, ma trovare una politica che non comprometta l'usabilità della tua applicazione è la parte più difficile che sembra la parte più difficile. Spero che aiuti alcuni però.

    
risposta data 16.02.2014 - 18:24
fonte
0

I tentativi di accesso non riusciti devono essere conteggiati lato server per nome utente e indirizzo IP. Se un utente malintenzionato proverà a caricare bruteforce, cambiare l'indirizzo IP non dovrebbe aiutarlo. Inoltre, se l'aggressore provasse anche a fare bruteforce anche su Alice, allora non poteva, perché il suo indirizzo IP era già stato aggiunto alla lista nera, mentre cercava di hackerare Bob in precedenza. Bob avrà il suo account bloccato, quindi dovresti mandargli un'e-mail con un codice di sblocco. Proverò 5 tentativi di accesso falliti, quindi BAN. Nessun timeout, nessuna seccatura.

    
risposta data 16.02.2014 - 18:28
fonte

Leggi altre domande sui tag