Sto cercando un modo per far sì che un sito web ricordi i dati sensibili, ma senza conservarlo sul lato server. E stavo guardando HTML5 localStorage
per farlo. Ecco il piano come lo vedo io.
- L'utente inserisce i dati sensibili nella forma e invia.
- Server crittografa i dati tramite AES-256 con una chiave strong che viene mantenuta nel controllo del codice sorgente privato.
- Il server risponde, fornendo dati crittografati alla pagina di rendering.
- La pagina viene eseguita con javascript per salvare i dati crittografati in
localStorage
Più tardi ...
- L'utente visita una pagina che utilizza javascript per recuperare i dati crittografati da
localStorage
e li invia al server. - Il server decrittografa i dati crittografati, ottenendo l'accesso alle informazioni sensibili per tale richiesta.
Il mio pensiero è che ciò consente al client o al server di essere compromesso e le cose rimangono al sicuro. Se il client è compromesso, l'hacker può leggere solo una stringa crittografata che non ha la chiave per decifrare. Se il database del server è compromesso, i dati semplicemente non vengono memorizzati lì, quindi ovviamente l'hacker non può accedervi.
(Ovviamente alcuni tipi di hacking dei server potrebbero leggere i dati sensibili mentre arrivano inizialmente, ma un tale hack funzionerebbe indipendentemente dal fatto che il client lo memorizzasse o meno, in modo che non si applichi a questa discussione. non funzionerebbe ancora, sto semplicemente parlando di archiviazione dei dati compromessa da entrambi i lati qui)
Ma non sono un esperto di sicurezza, quindi mi chiedo se il mio piano abbia qualche buco in esso? Mi mancano delle evidenti vulnerabilità di sicurezza che mi mancano qui?