sql >> Database >  >> RDS >> Mysql

Gebruikersgegevens versleutelen voor automatische aanmelding bij systeem van derden

Je struikelde over het grootste probleem met het versleutelen van gegevens in de database:

➽ Waar de sleutel bewaren?

Versleuteling kan het probleem van het beveiligen van gegevens niet oplossen, het kan het alleen "concentreren" op een sleutel. Waar u de sleutel ook opslaat, uw toepassing moet de gegevens kunnen ontsleutelen, net als een aanvaller. Er zijn twee mogelijke oplossingen voor dit probleem die ik ken:

  1. Plaats de sleutel op een zo veilig mogelijke plaats. Dat betekent dat het zeker buiten de www-root-map moet worden geplaatst in een ontoegankelijke map op de server. Afhankelijk van het belang van de gegevens kunt u ook overwegen om encryptie uit te besteden aan een andere dedicated server.
  2. Sla helemaal geen sleutel op en ontleen deze aan het gebruikerswachtwoord. Dit is de enige echt veilige manier, omdat zelfs de server de gegevens dan niet kan decoderen. De nadelen zijn natuurlijk dat de gebruiker het wachtwoord elke keer dat hij uw service gebruikt, moet invoeren. Als de gebruiker het wachtwoord wijzigt, moet u alle gegevens opnieuw versleutelen. Als de gebruiker het wachtwoord vergeet, gaan de gegevens verloren.

PS Ik zou aanraden om de gegevens voor te versleutelen opslaan in de database, omdat MySQL AES_ENCRYPT de ECB-modus gebruikt zonder een IV. Dit maakt het mogelijk om naar een bepaalde waarde te zoeken, maar is minder veilig (ik ben er vrij zeker van dat je niet op wachtwoord wilt zoeken).




  1. Voorloop- en volgnullen toevoegen in SQL Server

  2. Welke bedrijfstakken profiteren het meest van toegang?

  3. Ontbrekende verbindingen in tomcat jdbc-verbindingspool

  4. Hoe u uw PostgreSQL-databases beheert vanuit de ClusterControl CLI