La prima volta che esegui un accesso sicuro da un'app mobile a un server (integrato in java). Voglio capire se ho capito bene.
Accedi per la prima volta:
1. Sul dispositivo mobile hardcode una frase di sicurezza (es: "superSecurePhrase @@ !!".
2. Inserisci un nome utente e una password.
3. Usa base64 per codificare username + phrase e password + phrase.
4. Usando https invia queste informazioni al mio server.
5. Sul server decodificare usando base64 con la frase corrispondente hardcoded sul dispositivo.
6. Hash password e salva su DB, anche hash username e salva su DB.
7. Utilizzare l'algoritmo AES per creare un token di sessione
8. Invia token di sessione al dispositivo.
9. Salva il token di sessione su DB e quando l'utente richiede qualcosa, assicurati che corrisponda.
Per verificare le credenziali è più o meno lo stesso processo, tranne il nome utente e la password non vengono salvati, ma interrogati per il DB e controllati per una corrispondenza?
È questo il modello generale utilizzato per questo genere di cose?
Potenziali vulnerabilità:
1. Accesso fisico al dispositivo per recuperare la frase base64 codificata in modo rigido?
2. SSL Sniffing e acquisizione del token?
Grazie per il tuo aiuto.