Sto sviluppando un'API REST backend per una delle mie app mobili. Sto cercando di creare un sistema di autenticazione basato su token che permetta un accesso persistente e mi chiedo se ci siano dei difetti di sicurezza che ne risulterebbero.
Ecco una carrellata del mio piano:
- L'utente autentica le proprie credenziali sul server (Nota: tutte le password verranno salvate in una tabella di utenti ipotetici e saranno sottoposte a hash + salate)
- Assumendo che le credenziali siano corrette e verificate, il server genera un token di autenticazione che viene creato concatenando il nome utente, un timestamp e una stringa casuale di testo. La concatenazione verrà sottoposta a hash (l'hash sarà il token)
- Questo hash viene quindi memorizzato nel database e trasmesso al client (utilizzando SSL), che verrà archiviato e inviato nelle intestazioni insieme al nome utente per ogni richiesta effettuata dal cliente.
- Il token e il nome utente vengono quindi verificati dal server per corrispondere a quelli del database.
-Nota: ogni volta che viene effettuato un nuovo login di successo, verrà generato un nuovo token che verrà quindi sostituito nel database impedendo l'accesso simultaneo a più dispositivi nell'account.
Supponendo che tutte le query del database siano parametrizzate, quali altri tipi di vulnerabilità ipotetiche potrebbero derivare dall'uso di un sistema come questo?