How can I provide decent security on this one to prevent someone grabbing the database (by local access - this machine is NOT Internet connected) ?
C'è molto che puoi fare, ma la maggior parte non è direttamente programmazione di database. Poiché la maggior parte di questo non è la programmazione, potrebbe essere fuori portata per te. Non so cosa sei stato assunto per fare o quale sia il tuo background. Se questo è fuori dal campo di applicazione o non ti senti comodi nell'implementarlo, allora fai sapere al tuo cliente quali sono i tuoi problemi di sicurezza e consiglia di assumere uno specalista.
- Hash i numeri delle carte di credito.
Dipende dallo scopo dei numeri memorizzati delle carte di credito. Se il numero viene utilizzato solo per identificare univocamente un cliente o un acquisto, in realtà non è necessario il numero della carta di credito, solo un valore che mappa in modo inequivocabile il numero della carta di credito. Se questo è il caso, sostituisce il numero della carta di credito con un hash del numero della carta di credito. Alcuni algoritmi di hash: SHA1, MD5, RIPEMD-128/256.
- Elimina il numero della carta di credito.
Se a un certo punto il numero della carta di credito non è più necessario, ma il resto dei dati nella riga è, deselezionare il campo della carta di credito. Se è necessario conservare alcune indicazioni della carta, ma non per la ricarica, mantenere le ultime quattro cifre.
- Spezza il database in pezzi.
Se non hai bisogno di accedere all'intera cosa allo stesso tempo, spezza il database in pezzi a cui devi accedere allo stesso tempo. Se le voci sono indipendenti, suddividili in pezzi di dimensioni uguali. Questo limiterà il danno se un pezzo viene perso o rubato. Prova a caricare pochi pezzi alla volta come è ragionevole. Se la tua applicazione ha solo pochi pezzi accessibili alla volta, questo rallenterà un utente non autorizzato.
- Salva le chiavi dalla macchina.
Ci sono alcuni modi per farlo. Un metodo sta usando un token crittografico. Esistono dispositivi USB, dispositivi smart card e token software. I token software possono essere memorizzati su qualsiasi supporto rimovibile (CD-ROM, DVD, unità USB flah, ecc.). Se rompi il tuo database in pezzi, potresti prendere in considerazione l'utilizzo di chiavi diverse per alcuni pezzi, specialmente se alcuni vengono usati meno frequentemente di altri.
Un salt è un numero casuale in genere utilizzato con voci di password con hash per rendere difficile per un utente malintenzionato che accede a un database di password per trovare rapidamente tutte le password nel database. PBKDF2 è un algoritmo crittografico che utilizza una password salt e una password per generare una chiave. Generare un salt (numero casuale) per ogni riga e memorizzare il sale in testo in chiaro nella riga. Utilizzare PBKDF2 o un altro algoritmo di generazione della chiave adatto per generare una chiave per la riga e crittografare i dati della carta di credito utilizzando la chiave generata. Lo scopo è di fare in modo che l'utente malintenzionato legga il database e generi una nuova chiave per decrittografare ogni numero di carta di credito.
- Limita l'accesso alla rete al sistema.
Dici che la macchina non è collegata a Internet, ma sospetto che sia ancora su una rete interna. Utilizzare il firewall sul sistema per riattivare l'accesso alla rete a due o tre altri sistemi. Se il sistema deve connettersi a più di due o tre altri sistemi, potrebbe essere necessario pensare a spostare il database su un sistema diverso o creare un sistema dedicato per il database.
- Limita l'accesso degli utenti al sistema.
Configurare la politica di sicurezza per consentire solo a pochi utenti critici di accedere alla macchina. Se più di otto persone hanno bisogno di accedere alla macchina, di nuovo dovrebbe essere un segnale che il database dovrebbe essere spostato su un altro sistema o sul proprio sistema dedicato. Il mio rapido però su otto utenti: Amministratore di sistema, Amministratore di sistema alternativo, Amministratore di sicurezza, Amministratore di sicurezza alternativo, Amministratore di database, Amministratore di database alternativo, Sviluppatore di applicazioni, Sviluppatore di applicazioni alternativo.
- Limita l'accesso fisico al sistema.
Questa è solo la vecchia porta chiusa. Se è necessario trovarsi in un'area condivisa con altri sistemi, provare a renderli sistemi che consentano l'accesso agli stessi utenti. Se tutto ciò che è disponibile è un armadio o un armadietto, assicurati solo che abbia una chiave univoca. Un sacco di serrature per ufficio e mobili comuni condividono chiavi comuni.
- Limita gli utenti che hanno accesso fisico al sistema.
Solo perché hanno bisogno di accedere alla macchina non significa che abbiano bisogno di un accesso fisico al sistema. Scegli chi dare le chiavi e chiedi loro di non fare copie o prestarle a nessun altro.