Questo è un cross-post dal mio Programmers.StackExchange post - Penso che questo potrebbe essere un forum migliore per porre questa domanda. Amministratori: cancella uno di essi come ritieni opportuno.
Sulla mia app mobile, sto memorizzando il nome utente di una persona che ha effettuato il login e sto scaricando alcuni dati per il nome utente specificato / memorizzato. Quando l'utente controlla la presenza di aggiornamenti sul suo contenuto di dati sul server, il server visualizza un delta del contenuto, in base al nome utente. L'app aggiorna quindi la sua visualizzazione locale di conseguenza.
Il problema è che, poiché sto usando localStorage, non c'è alcuna garanzia che qualcuno non modifichi il nome utente memorizzato localmente e provi a richiedere i dati destinati a qualcun altro.
Quale sarebbe il modo migliore per aggirare questo possibile buco di sicurezza? Si prega di commentare questo metodo che sto pensando di implementare:
- Ogni volta che accedi, una stringa casuale viene generata e archiviata per il controllo futuro in un database, insieme al tuo nome utente e alla data / ora della richiesta.
- Ogni volta che arriva una richiesta di download dei dati per un nome utente, deve essere accompagnata dalla stringa del tentativo precedente. Inoltre, ogni nuovo aggiornamento per il client è accompagnato da una nuova stringa casuale, che viene archiviata nel database e quella precedente è considerata scaduta.
- Se la stringa casuale non viene fornita correttamente, l'utente viene disconnesso dall'app mobile (in quanto potrebbe potenzialmente essere qualcuno a manomettere l'app).
Il vantaggio che vedo per questo metodo è che ho anche una pista di controllo per le successive verifiche e analisi forensi. Quali sono i difetti e cosa potrei fare meglio?