Il sito deve essere ospitato su un server Internet condiviso, per memorizzare dati non commerciali e sarà chiaramente etichettato come non per informazioni sensibili.
Desidero offrire una soluzione credibile ai rischi di qualsiasi amministratore del server semplicemente potendo leggere i campi di testo in chiaro nel database direttamente o tramite un backup e allo stesso modo se il server viene violato e il database è accessibile. Non vi è alcuna minaccia percepita da determinati hacker poiché i dati hanno poco valore.
Le mie preoccupazioni riguardano principalmente la gestione delle chiavi: l'archiviazione della chiave segreta crittografata nel database e l'archiviazione della chiave segreta decrittografata in una variabile Session. Tutti i commenti sarebbero ben accetti.
Il mio piano è il seguente:
Usa php mcrypt_encrypt (MCRYPT_RIJNDAEL_256). Memorizza la chiave segreta simmetrica crittografata sul database utilizzando un hash di una frase segreta che verrebbe assegnata all'organo (fino a 10 persone).
Dopo che un utente accede con il proprio nome utente e la password viene loro richiesto per la frase segreta unica: se viene inserito correttamente, la chiave segreta simmetrica viene decifrato e memorizzato in una variabile di sessione, i dati protetti viene decifrato e visualizzato.
La chiave segreta è memorizzata in una variabile Session, che viene distrutta quando l'utente si disconnette o dopo un timeout della sessione. Il sito è anche protetto usando apache htaccess in quanto non è per uso pubblico. Il php sta incorporando metodi per difendersi da xss, iniezione ecc.
Oltre a dare all'utente finale la responsabilità di gestire la frase segreta, questo piano presenta evidenti punti deboli?