Questo sistema di autenticazione è sicuro per un'app mobile? Cosa posso fare per migliorarlo?

2

Gli utenti si autenticano con il proprio numero di telefono, ricevono un testo pin e, se è corretto, ricevono un token di accesso. Archivia il token di accesso in un DB in un modello Token . Il client invia sempre il token di accesso in un'intestazione Authorization . Per le richieste che richiedono l'autenticazione, analizzare l'intestazione, verificare se si trova nel database e visualizzare l'id utente (anch'esso memorizzato nel modello Token ) in base alla riga. Supponendo che user_id esista e il token sia contrassegnato come ancora valido, completa la richiesta.

Tutto è finito su HTTPS. I token non hanno scadenza. Se non è valido, elimino il token sul client e quindi all'utente verrà richiesto un altro. I token sono stringhe alfanumeriche casuali e lunghe

È ragionevole? È sicuro? Dovrei usare qualche paradigma preesistente?

    
posta mergesort 14.04.2015 - 21:52
fonte

1 risposta

2

Users authenticate with their phone number, get a pin text, and if it is correct, they get an access token.

I numeri di telefono sono PII, quindi dovresti tenerli al sicuro (crittografati?). I messaggi di testo sono inviati in chiaro e sono leggibili dalle applicazioni per smartphone, lo considerano. Inoltre, i numeri dei pin sono casuali o possono essere detratti facilmente? Sono validi indefinitamente?

The client always sends the access token in an Authorization header.

Quindi, se il token viene rubato, la sessione può essere falsificata da un altro numero di telefono?

Everything is over HTTPS.

Considera di testare le tue impostazioni TLS. Le impostazioni predefinite non sono sicure nella maggior parte dei casi. Ci sono servizi online che ti aiutano con questo.

Tokens are just random, long alphanumeric strings

Quanto è casuale, quanto tempo? Il token può essere forzato brutalmente? Ostacoli i tentativi di accesso dopo alcuni tentativi falliti?

Is this reasonable? Is it secure?

Come richiesto da un commentatore, qual è il tuo modello di minaccia?

Should I use some preexisting paradigm?

Sì. Non tirare il tuo .

    
risposta data 14.04.2015 - 22:23
fonte

Leggi altre domande sui tag