È un buon modo per gestire il processo di login

3

Volevo solo sapere se questo sarebbe stato considerato un buon modo per gestire il processo di login. Non importa in quale lingua è scritto.

Userò questo formato per i compagni. - Evento (Dove è successo)

  1. Connessione al server con credenziali utente. (Client)
  2. Verifica se l'indirizzo IP è bloccato (guardando in una tabella sul database), se SÌ allora invia ERRORE dicendo che l'IP è bloccato. (Server)
  3. Verifica se l'account è attivo, se NO poi invia un ERRORE al cliente che dice che l'account non è attivo. (Server)
  4. Verifica se l'account è bloccato / bannato dal server, se SÌ allora invia ERRORE dicendo che l'account è bloccato o bannato dal server. (Server)
  5. Confronta l'hash della password con l'hash della password dell'account utente del database, se il confronto è NEGATIVO aumenta il numero di tentativi nel database associato all'indirizzo IP. Se vengono raggiunti 3, bannare l'indirizzo IP. (Server)
  6. Il login ha successo a questo punto!

Domanda addizionale:

  1. Se guardi al punto 5. Ho provato a trovare un buon modo per bloccare l'utente reale che tenta di accedere (che non significa che sia il proprietario dell'utente dell'account) ma senza influenzare l'utente reale. Quello che voglio dire è che se qualcun altro oltre al proprietario dell'account tenta di accedere più di 3 volte sull'account specifico, otterrà il suo indirizzo IP bannato invece dell'account in questione. Sarebbe meglio bloccare anche l'account? per un tempo limitato o qualcosa del genere?

Grazie!

    
posta Rushino 22.02.2013 - 16:04
fonte

2 risposte

5

Nel tuo processo, le persone riceveranno un codice di errore distinto a seconda che l'account esista o meno. Questo è spesso considerato in qualche modo inopportuno. È preferibile se non è possibile, per gli estranei, sapere se esiste un determinato nome ; pertanto, il comportamento osservabile del server deve essere lo stesso in tutte le situazioni che dipendono dal nome dell'account e portare a un errore: l'account non esiste, l'account è disabilitato, la password è sbagliata. Nota che il "comportamento osservabile" include non solo il codice di errore restituito, ma anche il tempo impiegato dal tuo server per rispondere (se usi hashing password lento e salato à la bcrypt - e lo fai davvero - quindi la verifica della password può richiedere un tempo non trascurabile che può essere misurato dall'esterno).

Il bando di un indirizzo IP dopo alcuni errori ha i seguenti avvertimenti:

  • L'indirizzo IP che vedi potrebbe essere condiviso tra più persone, in caso di NAT . Questo è molto comune nelle organizzazioni. Sono comuni anche i proxy HTTP . Non vuoi che tre errori di uno utente inducano il tuo server a mettere al bando un'università completa, o anche tutti i clienti di un ISP specifico.

  • A volte, le persone dimenticano la loro password. Questo succede molto In questo modo otterrete errori di accesso "legittimi". Tali utenti vorranno utilizzare il processo "Ho dimenticato la mia password" e vorranno farlo immediatamente . Pertanto, il divieto non deve essere lungo (ad esempio, divieto per un minuto al massimo).

  • Gli hacker che sono intenzionati a provare molte potenziali coppie di login + password avranno relativamente pochi problemi nel trovare host relay per aggirare il banning basato su IP. Per esempio. Tor , per costruzione, diminuisce l'efficienza del bando IP.

Pertanto, non raccomando il bando degli indirizzi IP su base generale: ha un alto rischio di interrompere il servizio per gli utenti normali, pur non essendo molto efficace contro gli aggressori medi. Il bando IP è utile contro le situazioni di scoppio con aggressori crudi (ad esempio attacchi automatici da botnet che tentano di replicare), con strumenti come Fail2ban , ma possono ritorni di fiamma, quindi deve essere esercitata cautela.

Ricorda che il blocco degli account può anche ritorcersi contro:

  • Bloccare un account dopo troppi errori significa che chiunque può bloccare gli account di altre persone.

  • Gli aggressori che tentano molte coppie di login + password possono diffondere i loro tentativi su molti accessi distinti, evitando la funzione di blocco.

Soluzioni ragionevoli coinvolgono blocchi a tempo limitato (bloccano un account per circa un minuto dopo alcune password sbagliate) abbinati a un bind IP limitato nel tempo quando viene identificato un modello di accesso molto sospetto (molto di tentativi di connessione dallo stesso IP). Non daranno una protezione strong (solo le password degli utenti forti saranno), ma potrebbero aiutare a ridurre il rumore degli aggressori di basso grado e permetterti di concentrarti sui pochi casi in cui gli attaccanti mostrano una quantità insolita di competenze.

    
risposta data 22.02.2013 - 16:23
fonte
0

I tried to find a good way to block the actual user which try to login (which doesn't mean its the user owner of the account) but without affecting the real user. What i mean is that if someone else than the owner of the account try to login more than 3 time on the specific account it will get his IP Address banned instead of the account in question

Se sei stato in grado di dire a un hacker dell'utente legittimo a questo punto, perché preoccuparsi con un modulo di accesso in primo luogo? Lascia che sia l'utente legittimo a passare.

    
risposta data 21.09.2013 - 21:02
fonte

Leggi altre domande sui tag