2010-04-15 10 views
12

Sto cercando in una soluzione di app Web offline utilizzando HTML5. La funzionalità è tutto ciò di cui ho bisogno MA i dati memorizzati possono essere interrogati direttamente direttamente nel browser e quindi completamente non protetti!HTML5 Web DB Security

Esiste comunque la possibilità di crittografare/nascondere in modo che i dati siano protetti?

Grazie, D.

+0

Si veda anche qui: http://stackoverflow.com/questions/5976046/html5-client-side-data-encryption-what- are-my-options/6686558 # 6686558 – user832834

risposta

20

Ci sono due preoccupazioni per l'archiviazione locale in HTML5 -

  1. Un sito web la lettura dei dati in linea che un altro sito ha memorizzato in un browser degli utenti
  2. Un utente finale interrogazione i tuoi dati offline siti web direttamente

Per 1, i browser applicano le restrizioni dello stesso dominio a localStorage (o al sqllit supporto del database fornito da Safari), pertanto altri siti Web non avranno accesso ai dati archiviati. Tuttavia, ricorda che se il tuo sito ha vulnerabilità XSS, sarebbe possibile rubare i dati.

Per 2, non è possibile impedirlo. È proprio come un cookie: l'utente può scegliere di visualizzarlo/cancellarlo/modificarlo.

È possibile la crittografia dei dati (vedere http://farfarfar.com/scripts/encrypt/), ma inutile. Non puoi avere una sola chiave/password globale, perché un utente malintenzionato può facilmente capire la chiave dal codice javascript. È possibile utilizzare una password immessa dall'utente per crittografare/decrittografare, ma le librerie di crittografia sul lato client non sono mature o testate abbastanza bene. Ci sono probabilmente tonnellate di modi per romperlo.

Quindi, per ora almeno, non archiviare i dati riservati in localStorage.

+0

Il collegamento a http://farfarfar.com/scripts/encrypt/ non è attivo – Brian

+2

http://code.google.com/p/gwt-crypto/ è una libreria crittografica matura sicuro per l'uso nel codice lato client (sebbene usi GWT) – Tyson

2

Se sei memorizzare i dati sul computer dell'utente, l'utente può sempre leggere, non importa quanto si esegue la crittografia è [supponendo che non si utilizza un hash ...]

I dati sensibili va avanti il lato server, sempre.

+1

Non necessariamente. Se i dati crittografati possono essere decodificati solo con una chiave che deve essere sempre prelevata dal server (ad es., Non è memorizzata da nessuna parte in JS o sulla pagina) e se il server fornisce solo la chiave quando l'utente è autenticato in modo sicuro , quindi tra le sessioni legittime dell'utente i dati crittografati localmente sono sicuri. –

+0

L'hash non è crittografia. – Nisk

+0

@ Mr.TA che non funzionerebbe in uno scenario offline. – drogon