Impedire l'enumerazione degli utenti nella pagina di registrazione

10

Hai un sito Web in cui gli utenti eseguono l'accesso e vuoi impedire la numerazione degli utenti.

Nella pagina di accesso e nella pagina della password dimenticata, ciò può essere ottenuto mediante un'attenta scelta dei messaggi dell'utente, ma per quanto riguarda la nuova pagina di registrazione dell'utente? Vuoi assicurarti che la creazione di un account per un utente esistente sia impossibile, ma questo dice a un utente malintenzionato che l'account esiste già, consentendo l'enumerazione.

Quali meccanismi possono essere utilizzati per impedire l'enumerazione degli utenti sulla nuova registrazione utente?

    
posta James_pic 10.10.2014 - 12:51
fonte

5 risposte

9

Dato che il nome utente è la parte pubblica, non è la fine del mondo se può essere enumerato, tuttavia se si vuole davvero evitare questo, la cosa più semplice è farli usare come indirizzo di posta elettronica come nome utente. Quindi devi semplicemente dire che hai inviato un link all'e-mail, indipendentemente dal fatto che abbiano già un account.

    
risposta data 10.10.2014 - 15:45
fonte
3

Un'opzione è usare captcha. Il nome utente può essere verificato dopo l'invio e il captcha viene aggiornato se il nome utente è già stato preso. Questo almeno dovrebbe rallentare il processo.

Penso ci siano altre opzioni, ma sono complesse (ad esempio hanno un tempo esponenziale per restituire la pagina dopo un invio per un utente di duplicazione) o potrebbero rendere l'applicazione inutilizzabile (bloccare l'utente per un periodo di tempo dopo X tentativi).

Se utilizzi le email come nomi utente, la seconda opzione non è male.

    
risposta data 10.10.2014 - 13:33
fonte
1

L'enumerazione degli utenti non è così male. Il nome utente è pubblico, la password è segreta. Ad esempio, in questa pagina tutti possiamo sapere che l'utente James_pic esiste su stackexchange. Cercare su google o scrivere su un semplice crawler può facilmente dare un grosso numero di nomi utente all'attacco, aiutando a restringere l'attacco, ma altre misure di sicurezza rendono ancora molto difficile l'attività degli attaccanti.

L'idea è di avere una politica di sicurezza (almeno non scritta, in mente), separare le cose pubbliche e segrete e concentrare gli sforzi sulla sicurezza di ciò che deve essere segreto. Se si desidera utilizzare il nome utente come "seconda parte del segreto", questo è probabilmente il modo sbagliato, è meglio richiedere due password più lunghe o l'autenticazione a due fattori, perché mantenere i nomi utente in segreto è molto più difficile.

Se per qualche motivo hai bisogno di mantenere segreti i nomi utente (ad esempio, non vuoi che nessuno sappia quanti utenti hanno registrato) - allora forse è meglio assegnare il nome utente (es. userNNNNN, o user- < 10 random letters > ) o utilizzare l'indirizzo e-mail o il numero di telefono come nome utente.

    
risposta data 10.10.2014 - 14:30
fonte
-2

Un'altra opzione è quella di utilizzare lo stesso approccio della schermata di accesso: dì loro che c'è qualcosa di sbagliato, ma non è sbagliato.

Ecco un esempio di messaggio di errore:

"A error occured with your registration. The cause of the error can be:
- The username is invalid or is already taken. Select Another username.
- The password is of a invalid length. Use a longer password.
- Both passwords do not match. Retype your passwords to ensure you entered them correctly.
- The email adress you entered is already registred or is invalid. Use a Another email adress.
- The captcha is invalid. Write the response for the captcha correctly.
- You have not agreed to the terms of service. Make sure you agree to the terms of service and check the applicable checkbox below.

Correct any errors in registration and try again. We do not disclose the reason why the registration failed for security reasons."

Questo può essere negativo per l'esperienza utente perché non sanno perché la loro registrazione viene rifiutata. Ma a volte, l'esperienza dell'utente deve essere scambiata per sicurezza.

    
risposta data 14.10.2014 - 10:15
fonte
-3

È possibile aggiungere un elenco massiccio di nomi utente pubblici al database e non consentire agli utenti di sceglierli e rispondere con un errore generale. In questo modo, un utente malintenzionato non può distinguere tra un utente valido e non valido.

Lo svantaggio sarebbe: 1- limitare gli utenti a scegliere il loro nome utente deliberato 2- Diminuisci le prestazioni aggiungendo una nuova query nei nomi utente falsi

qualche idea?

    
risposta data 25.01.2016 - 03:54
fonte

Leggi altre domande sui tag