Come verificare i dati da localStorage su un server

2

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:

  1. 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.
  2. 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.
  3. 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?

    
posta Sudipta Chatterjee 09.01.2013 - 10:38
fonte

1 risposta

2

Suppongo che tu abbia bisogno di una sorta di sessione che non scada velocemente (per esempio dura un paio di settimane). Nella maggior parte delle app mobili che ho utilizzato devi "creare account" e accedere per la prima volta (magari imitando le loro controparti web) e poi accedere occasionalmente dopo qualche tempo o dopo che un aggiornamento del firmware cancella la memoria locale.

In alternativa puoi chiedere all'utente di fornirti una chiave pubblica per mantenere il privato. È quindi possibile crittografare i dati con il pubblico e il telefono cellulare dovrà decrittografarli utilizzando la chiave privata memorizzata locale (il che causerebbe il problema della cancellazione della chiave privata dall'aggiornamento del firmware). Considererei anche un ibrido (chiave pubblica della password): link

    
risposta data 09.01.2013 - 13:32
fonte

Leggi altre domande sui tag