Da articolo della rivista Smashing 2012 una dichiarazione abbastanza audace per evitare AES in MySQL. O come dicono "Perché dovresti evitare AES in MySQL?". Tuttavia, se cerchi la crittografia SQL, spesso trovi il AES_ENCRYPT
da (My) SQL menzionato. Non sto dicendo che molti risultati di ricerca indicano che la dichiarazione non è vera, ma mi ha solo fatto pensare: le tre ragioni citate qui sotto sono effettivamente vere?
Che cosa pensano qui gli esperti di sicurezza riguardo alle ragioni per cui "PHP Mcrypt è superiore alle funzioni AES di MySQL":
- MySQL needs a database link between the application and database in order for encryption and decryption to occur. This could lead to unnecessary scalability issues and fatal errors if the database has internal failures, thus rendering your application unusable.
Non riesco a capire questo problema; se si cripta / decodifica in php, è necessario anche memorizzare i valori nel database con un collegamento al database? Se la decifrazione fallisce dal lato php, questo porta anche a problemi applicativi? Qual è il punto fatto qui?
- PHP can do the same MySQL decryption and encryption with some effort but without a database connection, which improves the application’s speed and efficiency.
Php può farlo "con un po 'di sforzo" e migliora la velocità dell'applicazione? Poiché stai crittografando prima di essere inviato via cavo, l'applicazione (che gestirà la crittografia) ottiene maggiore velocità ed efficienza? Come potrebbe essere vero? Secondo me, si tratta dello "strumento migliore per il lavoro", quindi l'argomento secondo cui "php è anche capace" non significa di per sé che sia lo strumento migliore . È solo uno strumento a , senza l'argomento perché è lo strumento migliore.
- MySQL often logs transactions, so if the database’s server has been compromised, then the log file would produce both the encryption key and the original value.
Questo è un punto valido se si crittografano i valori nel database e si attiva la registrazione. Almeno dovresti disattivare il log generale delle query come binary log registra solo le transazioni ma non seleziona le istruzioni. Se non hai bisogno di logging, puoi semplicemente rendere la dichiarazione "se usi AES in MySQL, disattiva tutto il logging". Mi sembra più valido di "se vuoi usare AES in MySQL, fallo in php".
Qualcuno può spiegarmi perché i suddetti punti potrebbero essere validi e perché, in generale, è meglio crittografare i dati nella tua applicazione (php) piuttosto che in (My) SQL.