Devo cancellare i dati sincronizzati localmente se l'utente non può accedere?

7

Sto costruendo un'app per Mac che sincronizza i documenti dell'utente da un servizio cloud di terze parti. Quando lo configuri, sincronizzerà tutti i tuoi documenti sul disco rigido locale, a quel punto potrai accedervi in Finder.

Ai fini di questa domanda, puoi immaginare che sto costruendo un client Dropbox di terze parti. Non lo sono, ma è un'approssimazione abbastanza buona per questa domanda. I punti chiave sono che non controllo il servizio cloud e che i dati sono accessibili tramite Finder una volta sincronizzati.

Supponiamo, in un secondo momento, che il server rifiuti il token OAuth / password salvata e che l'utente non sia in grado di fornire una password che funzioni. Dopo un certo numero di tentativi o una certa quantità di tempo che passa, dovrei cancellare tutti i documenti sincronizzati per prevenire l'abuso?

Scenario 1: un utente malintenzionato indovina la password di un utente e la utilizza per accedere al servizio cloud tramite la mia app e accede ai documenti dell'utente. L'utente viene a sapere e cambia la sua password / revoca i token di autenticazione. A questo punto, l'utente vorrebbe che i suoi documenti fossero cancellati dal disco rigido dell'attaccante. O se l'utente vende / regala / presta il proprio laptop a qualcuno, dimenticandosi di effettuare il logout nella mia app, e se ne rende conto in seguito e cambia la password / revoca i token di autenticazione, vorrebbe nuovamente che i documenti già sincronizzati venissero eliminati dal disco rigido del laptop.

Scenario 2: un hacker acquisisce l'account e blocca l'utente. Oppure il cloud provider commette un errore e blocca l'utente dal suo account. Quindi l'utente vorrebbe un backup dei suoi dati sul suo disco rigido locale, invece di perdere l'accesso ai suoi preziosi dati.

Se elimino tutti i documenti sincronizzati esistenti, ho fallito l'utente nello scenario 2. Se non elimini tutti i dati sincronizzati, ho fallito l'utente nello scenario 1.

Esiste una best practice per questo? Una linea guida generale su cosa devono fare i client per i servizi cloud se l'utente non può più accedere?

Si noti che non posso conservare i dati sul disco fisso del Mac ma negare l'accesso, poiché l'utente accede ai dati tramite Finder, non tramite la mia app. Le scelte sono per eliminare o non cancellare i dati.

    
posta Vaddadi Kartick 02.12.2016 - 10:49
fonte

3 risposte

2

Dovresti mantenere l'utente sotto controllo. Detto questo, puoi fare quanto segue:

  1. Non eliminare mai automaticamente i file sincronizzati dell'utente
  2. Puoi eliminare i file sincronizzati sulla richiesta dell'utente, in modo simile alla cancellazione dei dati sul telefono da remoto.

In questo modo l'utente ha il controllo dei suoi file e può rimuovere file da altri dispositivi in caso di disconnessione fallita.

Questa dovrebbe essere una funzione, come l'utente nel suo pannello di controllo può vedere vari dispositivi / posizioni sincronizzando i suoi file, e può quindi scegliere quali posizioni / dispositivi dovrebbero cancellare il backup al login fallito.

Questo dà all'utente un buon controllo, che può prima aggiornare la sua password su tutti i dispositivi, e quindi richiedere di eliminare da qualsiasi altro luogo, dopo che la sua sincronizzazione ha funzionato con la nuova password.

Nello scenario più semplice, non sarebbe opportuno eliminare il backup, perché ciò lascia l'utente nella polvere e lo mantiene fuori controllo.

    
risposta data 02.12.2016 - 13:35
fonte
3

Lo scenario 1 funzionerà solo se l'attaccante è stupido. Se un ragazzo riesce a rubare la password di qualcuno e sincronizzare una cartella cloud sulla sua macchina, la prossima cosa che dovrebbe fare sarebbe salvare il contenuto dei dati rubati altrove solo per assicurarsi che una sincronizzazione il problema non poteva cambiarlo.

In tal caso, la cancellazione della cartella sincronizzata non avrà alcun effetto ...

    
risposta data 02.12.2016 - 15:11
fonte
1

Invece di cancellare i dati, è più veloce, più sicuro e più semplice crittografare semplicemente la versione locale dei dati. Il client non scrive mai la chiave di decodifica sul disco fisso locale, ma lo scarica dal server ogni volta che esegue l'autenticazione.

Se il client viene disconnesso dal server, non hanno accesso alla chiave di decrittografia e viene effettivamente eliminato. Se il client si riconnette, può eseguire nuovamente l'autenticazione per recuperare la chiave di decrittografia.

Inoltre, potresti dire all'utente di conservare una chiave di backup per decrittografare nel caso in cui il servizio cloud dovesse disconnettersi unilateralmente o se un hacker disconnette l'utente.

Lo svantaggio di questo è che il client doveva essere connesso al server almeno una volta all'avvio del programma per recuperare la chiave, altrimenti la cartella dell'utente rimane inaccessibile finché l'utente non si connette al server cloud o fino a quando non inserisce il proprio chiave di backup.

    
risposta data 03.12.2016 - 08:41
fonte

Leggi altre domande sui tag