Dopo aver creato un'app Web basata su uno stack PHP distribuito su un server, mi piacerebbe avere un modo per fornire l'accesso offline. C'è un database di pazienti e appuntamenti che deve essere consultato per l'accesso in lettura quando una connessione è inattiva o non disponibile. L'accesso all'app Web richiede un accesso all'account.
La preoccupazione è che, data la natura sensibile dei dati, sia in termini di codice che di DB, la semplice distribuzione dell'app Web localmente nella sua forma originale non è sicuramente un'opzione.
Mi chiedevo se mettere insieme una VM criptata in bundle con l'app Web e un server Web avrebbe fornito abbastanza sicurezza. Al client verrà richiesta una password, eseguirà la VM e si connetterà all'app Web utilizzando un indirizzo locale, nello stesso modo in cui lo farebbero per il server remoto.
Le mie aspettative in termini di sicurezza sarebbero che un utente malintenzionato con accesso al sistema locale non avrebbe:
- essere in grado di accedere alla VM
- ha accesso al codice effettivo dell'app Web mentre la VM è in esecuzione
- ha accesso ai dati del DB mentre la VM è in esecuzione
- non può dedurre informazioni sensibili tramite il dump della memoria mentre VM è in esecuzione
- anche se copiano l'immagine non saranno in grado di usarlo senza la password
Questo è realizzabile con una VM e quanta protezione fornisce? Da quello che ho visto, il tipo di fornitore di informazioni è disposto a fornire, è più in termini di passaggi di configurazione e meno in termini di funzionalità di sicurezza.
Mi chiedevo inoltre se fornire una versione ridotta dell'applicazione web come un client eseguibile offuscato (che dovrei reimplementare da zero e mantenere sincronizzato con l'effettiva app web) e un database crittografato potrebbe fare per una soluzione migliore.