Domanda

Vorrei impedire ai robot di hackerare account deboli protetti da password. (ad es. questo è successo a ebay e ad altri grandi siti)

Quindi imposterò un valore (mem-) memorizzato nella cache con l'ip, la quantità di tentativi e il timestamp dell'ultimo tentativo (memcache-fall-out).

Ma che dire dei robot che cercano di aprire qualsiasi account con una sola password. Ad esempio, il bot prova tutti i 500.000 account utente con la password "password123". Forse 10 si aprirà.

Quindi il mio tentativo è stato quello di memorizzare nella cache l'ip con try e impostare max-try su ~ 50. L'avrei eliminato dopo un accesso riuscito. Quindi il good-bot effettuerebbe l'accesso con un account valido ogni 49 tentativi di ripristinare il blocco.

C'è un modo per farlo bene? Cosa fanno le grandi piattaforme al riguardo? Cosa posso fare per impedire agli idioti di bloccare tutti gli utenti su un proxy tentando 50 volte?

Se non esiste una buona pratica, significa che qualsiasi piattaforma è forzata brutalmente? Almeno con un suggerimento su quando i contatori vengono resettati?

È stato utile?

Soluzione

Penso che puoi mescolare la tua soluzione con captchas:

  1. Conta il numero di tentativi per IP
  2. Nel caso in cui ci siano troppi tentativi da un determinato indirizzo IP in un determinato momento, aggiungi un captcha al modulo di accesso.

Altri suggerimenti

Alcuni siti ti danno forse due o tre tentativi prima che inizino a farti inserire un captcha insieme al tuo nome utente / password. Il captcha scompare una volta effettuato l'accesso.

C'è stato un articolo relativamente buono su Coding Horror qualche giorno fa .

Mentre il codice è incentrato su Django, c'è una discussione davvero valida sui metodi delle migliori pratiche sul blog di Simon Willison . Usa memcached per tenere traccia degli IP e degli errori di accesso.

È possibile utilizzare un controllo della sicurezza della password quando un utente imposta la loro password per assicurarsi che non stiano usando una password facilmente forzata.

EDIT: solo per essere chiari, questa non dovrebbe essere vista come una soluzione completa al problema che stai cercando di risolvere, ma dovrebbe essere considerata insieme ad alcune delle altre risposte.

Non sarai mai in grado di impedire a un gruppo di robot di provarlo da molti indirizzi IP diversi.

Dallo stesso indirizzo IP: direi se vedi un esempio di "sospetto" comportamento (nome utente non valido o più account validi con tentativi di accesso errati), basta bloccare l'accesso per alcuni secondi. Se è un utente legittimo, non gli dispiacerà aspettare qualche secondo. Se si tratta di un bot, questo li rallenterà fino al punto di essere poco pratico. Se continui a vedere il comportamento dall'indirizzo IP, bloccali, ma lascia una porta fuori banda per gli utenti legittimi (chiama il telefono #x o invia questo indirizzo e-mail).

ATTENZIONE: gli indirizzi IP possono essere condivisi tra MIGLIAIA o addirittura MILIONI di utenti !!! Ad esempio, la maggior parte / tutti gli utenti AOL appaiono come un insieme molto piccolo di indirizzi IP a causa dell'architettura di rete di AOL. La maggior parte degli ISP associa le sue grandi basi di utenti a un piccolo set di indirizzi IP pubblici.

Non puoi presumere che un indirizzo IP appartenga a un solo utente.

Non puoi presumere che un singolo utente utilizzerà un solo indirizzo IP.

Controlla la seguente domanda che discute delle migliori pratiche contro la forza bruta distorta e gli attacchi del dizionario:

Qual è la migliore contromisura della forza bruta distribuita?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top