Mysql
 sql >> Database >  >> RDS >> Mysql

Crittografia dei dati utente per l'accesso automatico a sistemi di terze parti

Ti sei imbattuto nel problema più grande con la crittografia dei dati nel database:

➽ Dove conservare la chiave?

La crittografia non può risolvere il problema della protezione dei dati, può solo "concentrarli" su una chiave. Ovunque memorizzi la chiave, la tua applicazione deve essere in grado di decrittografare i dati, così può farlo un utente malintenzionato. Ci sono due possibili soluzioni a questo problema che conosco:

  1. Metti la chiave in un luogo il più sicuro possibile. Ciò significa che dovrebbe sicuramente essere posizionato al di fuori della directory www-root in una directory inaccessibile sul server. A seconda dell'importanza dei dati, puoi anche considerare di affidare la crittografia a un altro server dedicato.
  2. Non memorizzare affatto una chiave e ricavarla dalla password dell'utente. Questo è l'unico modo veramente sicuro, perché nemmeno il server può decifrare i dati. Gli svantaggi sono ovviamente che l'utente deve inserire la password ogni volta che utilizza il tuo servizio. Se l'utente modifica la password, è necessario crittografare nuovamente tutti i dati. Se l'utente dimentica la password, i dati andranno persi.

PS Consiglierei di crittografare i dati prima memorizzandolo nel database, perché MySQL AES_ENCRYPT utilizza la modalità ECB senza un IV. Questo permette di cercare un certo valore, ma è meno sicuro (sono abbastanza sicuro che tu non voglia cercare per password).