Sto usando PHP 5.6 su Apache 2.4
Ho un modulo che raccoglierà informazioni sensibili sull'utente che devono essere crittografate. La mia attuale soluzione cattura le informazioni sensibili dal POST e immediatamente in un modo crittografa asimmetricamente con una chiave pubblica prima di memorizzarlo nel database. Userò SSL sul sito.
Il mio piano è quello di recuperare la versione crittografata e decrittografare localmente in quanto le informazioni sono necessarie, e quando i dati non sono necessari ulteriormente, ho intenzione di eliminarlo interamente.
Sono preoccupato che se il server è compromesso e un hacker è in grado di sapere che quanto sopra sta succedendo, c'è un'opportunità per l'hacker di scrivere uno script per raccogliere i dati POST prima che io possa elaborarlo e svuotarlo.
Ho esaminato la crittografia delle informazioni prima che il modulo venga inoltrato tramite JavaScript, ma sono preoccupato per il carico della CPU / memoria che causerebbe sul browser.
Esistono modi migliori per assicurarsi che nessuno possa, tramite uno script iniettato, accedere ai dati POST? O sono solo un paranoico in più?
Chiarimento:
Sto crittografando le informazioni sensibili con chiavi pubbliche / private RSA 16.384 bit. La dimensione media del blocco di informazioni è più vicina a 8000 bit, ma il 16,384 bit consente casi di utilizzo estremi.
Solo la chiave pubblica è sul server, elaboro le informazioni in un array JSON e quindi utilizzo la funzione openssl_public_encrypt()
di PHP. Quindi memorizzo il blocco crittografato in MySQL.
Durante la decrittografia delle informazioni per l'uso, scarica il blocco crittografato tramite un portale di amministrazione sicuro (HTTPS, token CSRF, confronto delle password di hash riciclato unidirezionale) e decrittografia utilizzando una libreria basata su JavaScript sul mio computer locale.
Questo è il mio caso peggiore
Prima di questo progetto, avrei concordato con il sentimento che se un hacker si trova sul mio sistema, allora ho problemi più grandi. Tuttavia, un hacker che annusa queste informazioni prima della crittografia è esattamente il problema più grande che ho. Non è CC # s, lo sto gestendo tramite Stripe e compatibile al 100% PCI.
Tuttavia, avrei la stessa responsabilità, se non maggiore, se queste informazioni fossero state compromesse.
Questo è il motivo per cui andrò a tali estremi come gestire la decrittografia localmente. Ho letto i principi di conformità PCI, in modo tale che le informazioni sensibili debbano essere crittografate durante il transito e l'archiviazione, ma sembra esserci una lacuna durante l'elaborazione anche lì. Se mi sbaglio, per favore, fai riferimento alla documentazione, così posso istruirmi meglio.