Quanto è sicuro lo spazio locale?

32

La domanda dice tutto davvero. Voglio fornire un servizio ma non voglio memorizzare nessuno dei dati in un database. Con tutte le recenti notizie di hacking, mi sembra che sia più bello che i clienti abbiano il controllo completo sui loro dati.

Il problema è che i dati memorizzati sono potenzialmente sensibili. Quello che stavo per fare era ... quando un cliente visita il sito web ci sarebbe una domanda che chiede "sei su un personal computer o su un computer pubblico". Se sono su un computer pubblico, il sito rifiuterà l'accesso.

Se si trovavano su un personal computer, richiederebbe loro di impostare una password. Tutti i loro dati sarebbero quindi crittografati con questa password. Ora ovviamente questo non è troppo sicuro. Il metodo di crittografia sarebbe in JavaScript e la loro password in testo normale, quindi presumo che sarebbe possibile per un utente esperto individuare la password in localStorage e accedere ai dati.

Tuttavia, ritengo che questo non sia un problema. Se si sta utilizzando un personal computer, le possibilità che ciò accada sono remote in quanto ... qualcun altro avrebbe bisogno di accedere al proprio account utente specifico sul computer, qualcun altro avrebbe bisogno di sapere del sito ... qualcun altro avrebbe bisogno di capire localStorage e come accedervi. I dati sensibili non ne compromettono l'identità o altro. Registra semplicemente qualcosa che la maggior parte della gente non vorrebbe pubblicamente pubblicata.

Quindi la domanda è: localStorage è abbastanza sicuro?

Domanda aggiuntiva ... quanto è difficile cancellare il tuo LocalStorage? Non vorrei che gli utenti lo facessero cancellare accidentalmente i loro dati.

Infine - vale addirittura la pena crittografare / decrittografare i propri dati come se si avesse la password per accedere al sito ..

    
posta JasonS 05.05.2011 - 18:19
fonte

6 risposte

9

Che ne dici di non archiviare la password, nemmeno nella memoria locale? È possibile utilizzare una funzione di derivazione della chiave per ottenere una chiave dalla password. Con un sale e un numero ragionevole di iterazioni, questo dovrebbe essere decentemente sicuro.

    
risposta data 05.05.2011 - 18:22
fonte
2

L'utilizzo di JavaScript con memoria locale è al massimo sicuro (il tuo server più la connessione tra browser e server).

Se qualcuno riesce a modificare il server e servire diversi file JS o modificare (durante la trasmissione) i file JS inviati dal server al client, possono fare qualsiasi cosa con i dati che desiderano.

Inoltre: poiché i dati si trovano sul client, non è possibile fare nulla per proteggere i dati. Su un server ordinario potresti ad es. limitare la frequenza di accesso (esempio per una password remota sicura: solo 1 password letta entro 10 minuti). Tutto ciò è inutile se i dati sono sul client e tutto il codice che lavora con i dati può essere manipolato da un utente malintenzionato.

Dopotutto, anche con localstorage hai bisogno di proteggere la tua applicazione web! Perché fare cose sul server (si spera) sicuro allora? In caso contrario, perché non utilizzare un programma locale installato sul client?

    
risposta data 05.05.2011 - 18:44
fonte
2

Che ne dici di ottenere una chiave dal server che viene utilizzata per decrittografare i dati localStorage?

Potrebbe funzionare così:

  • Quando viene stabilita una sessione, il server restituisce una chiave.
  • Tale chiave viene utilizzata per crittografare / decrittografare i dati in localStorage.
  • Quando l'utente lascia la pagina, la chiave viene persa, impedendo ad altri di leggere cosa c'è in localStorage.

Questo dovrebbe consentire l'accesso solo quando un utente ha una sessione stabilita.

    
risposta data 08.08.2012 - 00:58
fonte
0

generalmente non è difficile cancellare la memoria locale, ma dipende dal browser. Devi comunque avere gli strumenti per gli sviluppatori dei browser (firebug, roba per i webkit, ecc.)

pensaci come pensi di biscotti. Non dovresti mai tenere i dati sensibili nella memoria locale. password, numeri di carte di credito, qualunque cosa.

puoi sempre implementare alcune funzionalità per cancellare la memoria locale dopo x quantità di inattività, ma questo non risolverà un problema di sicurezza. È come se una sessione automatica scadesse. Lo stesso problema si applica, se una persona lascia un computer e poi qualcun altro si siede prima che la sessione scada, possono fare cose.

    
risposta data 05.05.2011 - 18:23
fonte
0

Due problemi:

  1. se si memorizzano password di testo normale e quindi si basa sul fatto che non è probabile che vengano trovate, è solo la sicurezza attraverso l'oscurità. Basta archiviare i dati in chiaro e fare affidamento sullo stesso presupposto (non ancora sicuro, ma nessun falso senso di sicurezza)

  2. sulla maggior parte dei browser, se gli utenti cancellano la cache rimuovono anche i loro contenuti localStorage. Le persone non si aspettano di perdere dati importanti quando cancellano cronologia e cache.

Penso che tu stia piegando troppo il significato di localStorage. Se vuoi utilizzare un database locale che funzioni bene con le applicazioni web, puoi dare un'occhiata a CouchDB 's couchapps .

Ma non memorizzare la password.

    
risposta data 05.05.2011 - 18:32
fonte
0

Potresti usare javascrypt . Chiedi all'utente una password che diventi la chiave di crittografia / decrittografia

Non è necessario memorizzare la password, ma richiederla ogni volta che l'utente apre la pagina.
Può essere memorizzata, se l'utente vuole, e ora le implicazioni.

Ma poi per unire il commento di stivlo, che dire:

  1. accesso a più dispositivi
  2. Backup
  3. password dimenticata
  4. cancellazione della cache troppo facile

Penso che dovresti riconsiderare l'inizio del ragionamento. Evitare la nuvola solo a causa di alcuni eventi recenti e sensazionali, è una rapida conclusione.

    
risposta data 05.05.2011 - 21:42
fonte

Leggi altre domande sui tag