sql >> Database >  >> RDS >> Mysql

Wat is de beste manier om gevoelige gegevens op te slaan in MySQL?

Serieus, GEBRUIK NIET MySQL's aes_encrypt() Het is de meest onveilige methode om een ​​blokcijfer te gebruiken. Het gebruikt de ECB-modus en ik kan een eenvoudig voorbeeld geven waarom dit een ernstige fout is.

Tekstbericht zonder opmaak:

Hetzelfde bericht versleuteld met ECB-modus (maakt niet uit welk cijfer je gebruikt):

Het EXACT hetzelfde bericht met de CBC-modus (nogmaals, het maakt niet uit welk cijfer je gebruikt):

Er zijn nog meer redenen om aes_encrypt van mysql niet te gebruiken, met name elke afzonderlijke query die u verzendt, heeft ook de aes-sleutel die u gebruikt. Als de database is gecompromitteerd, schakelt de aanvaller logboekregistratie in en haalt hij gewoon uw aes-sleutel op en decodeert de volledige database .

Dus wat moet je gebruikt? Ik hou van deze klasse voorlopig. Het gebruikt de CBC-modus met een String2Key-functie en een IV. U kunt de primaire sleutel als uw IV gebruiken, elk bericht moet een unieke IV hebben. Het is oké als de aanvaller de IV kent, en als ze opeenvolgend zijn, zolang de implementatie van de blokcodering veilig is. Hergebruik van een IV maakte WEP veel minder veilig .



  1. Meest recente rij ophalen voor gegeven ID

  2. gegevens ophalen uit mysql en e-mailen

  3. kan geen extensie maken zonder de rol van supergebruiker

  4. Hoe waarde in MySQL te verhogen met PHP mysqli