Autenticazione utente nell'app

-1

Voglio creare un'app quiz mobile in cui gli utenti possano registrarsi e competere l'uno con l'altro. Per la registrazione sto solo usando la combinazione username / password.

Voglio chiederti quali sono i modi migliori per archiviare questi dati. Stavo pensando di salvare semplicemente il nome utente e la password nel database di Firebase. E 'un buon modo? Ma poi avrei cose strane come, quando l'utente si collega, dovrei caricare tutti gli utenti registrati nell'app e cercare la stringa uguale a tutti gli utenti registrati e l'utente che sta tentando di accedere.

    
posta farahm 03.11.2017 - 21:49
fonte

1 risposta

3

Is that a good way?

Assolutamente no.

In breve, offri a un hacker l'opportunità di ottenere l'accesso a tutte le password degli utenti, testo normale. Questo ha diverse conseguenze:

  • Dato che gli utenti potrebbero riutilizzare le stesse password su altri siti, ciò significa che gli account degli utenti su altri siti potrebbero essere compromessi a causa tua. Si potrebbe dire che dovevano usare password diverse; Risponderò che tu sei il professionista IT, non i tuoi utenti, e spetta a te essere professionale e attento alle informazioni riservate di cui gli utenti si fidano.

  • Questo ti mette a rischio di essere attaccato. Un hacker che sappia che si memorizza ogni password, il testo in chiaro sarebbe incline ad attaccare la propria applicazione o infrastruttura, invece di un'applicazione che non memorizza alcuna password.

  • In alcuni paesi, potresti essere responsabile della memorizzazione di informazioni riservate in testo semplice.

Quindi quale sarebbe un modo migliore?

Idealmente, non memorizzerai affatto le password . Invece, utilizzerai un servizio di una terza parte che gestirà la gestione dell'account per te. Queste terze parti potrebbero essere Google, Facebook e molte altre società. Tecnicamente, ciò significa che utilizzerai OpenID (menzionato da Dan Pichelman nel suo commento) o OAuth (OAuth tecnicamente non è un sistema di autenticazione, ma è usato come se lo era, quindi deve essere menzionato qui).

Guardando la documentazione di OpenID / OAuth, potrebbe sembrare spaventoso ed estremamente complicato da impostare per un principiante. Non scoraggiarti per questo:

  • La maggior parte delle lingue / framework hanno librerie che fanno tutto il materiale tecnico per te. Devi solo configurarli e funziona abbastanza bene.

  • OpenID e OpenAuth sono usati ormai da molto tempo e sono ampiamente documentati, con un eccellente supporto. I problemi che incontrerai, qualcun altro li ha già incontrati in passato e hanno posto domande su StackOverflow e ottenuto risposte.

  • Sarebbe molto più difficile da zero creare il tuo sistema da zero, anche se sembra facile.

Se, per qualche ragione, decidi di non usare una terza parte per questo (anche se ti consiglierei di riconsiderare la tua scelta!) quindi almeno:

  • Non reinventare la ruota; o utilizzare ciò che viene fornito con il linguaggio / framework, o almeno utilizzare algoritmi esistenti come PBKDF2. Assicurati di capire quali algoritmi sono difettosi e quali no.

  • Non lavorare da soli, ma assicurati di lavorare con una persona che abbia sufficiente comprensione e sufficiente esperienza nei sistemi di autenticazione. Gli algoritmi sono una cosa, ma il modo in cui gestirai la scadenza della sessione, la procedura di reimpostazione della password e centinaia di piccoli dettagli faranno la differenza tra un sistema che gestirà una parte degli attacchi e un sistema che darebbe accesso illimitato a qualsiasi hacker decente in pochi minuti.

when the user logs in I would have to load all registered users to the app and search for string equals to all the registered users and the user currently trying to log in.

No, non lo fai. Quando l'utente esegue il login, si cerca una singola riga di database che corrisponde a quel particolare utente.

    
risposta data 04.11.2017 - 01:08
fonte

Leggi altre domande sui tag