Abbiamo un cliente che desidera che i suoi dati sensibili dell'utente vengano archiviati con una crittografia.
Questi sono i requisiti di base:
- I dati sensibili dell'utente vengono memorizzati in un database utilizzando la crittografia
- Un utente remoto che ha accesso al server web e / o al database non ha accesso ai dati sensibili
- L'utente che ha effettuato l'accesso deve poter accedere ai dati
Siamo arrivati con il seguente ambiente & Flusso di lavoro
Ambiente
-
Server 1
- Webserver che applica HTTPS
- Database con dati utente crittografati
- Non ha accesso al Server 2 - solo a un servizio
-
Server 2
- Servizio con autenticazione a 2 vie
- Ha accesso al database crittografato sul server 1
- Ha una chiave di crittografia per i dati utente nel Database sul Server 1
Flusso di lavoro
- L'utente accede al sito web con nome utente & password [Login parte 1]
- Il server 1 richiede un token sul server 2
- Il server 2 decrittografa il numero di cellulare dai dati utente sul Server 1 e invia un SMS di auth-code
- L'utente inserisce il codice di autorizzazione dall'SMS nel modulo [Login parte 2]
- Il server 1 richiede la chiave di crittografia dal server 2 utilizzando il token e il codice di autorizzazione
- Il server 1 memorizza la chiave richiesta nella sessione utente (sessione PHP, l'utente del server web non ha accesso) . Il server 1 utilizza alcuni dati di connessione degli utenti Web (indirizzo IP e stringa utente-agente) per crittografare la chiave nella sessione utente
Questa è una soluzione abbastanza buona per proteggere i dati sensibili?