sql >> Database >  >> RDS >> Sqlserver

wachtwoorden opslaan in SQL Server

De gebruikelijke manier om een ​​wachtwoord op te slaan, is door een hashfunctie op het wachtwoord te gebruiken, maar om salt het vooraf. Het is belangrijk om het wachtwoord te "zouten", om jezelf te verdedigen tegen regenboogtabel aanvallen.

Dus je tafel zou er ongeveer zo uit moeten zien

._______._________________.______________.
|user_id|hash             |salt          |
|-------|-----------------|--------------|
|12     |[email protected]|13%!#tQ!#3t...|
|       |...              |...           |

Wanneer u controleert of een bepaald wachtwoord overeenkomt met een gebruiker, moet u de salt samenvoegen met het opgegeven wachtwoord en de hash-functie van de resultaatreeks berekenen. Als de uitvoer van de hashfunctie overeenkomt met de hash kolom - dit is het juiste wachtwoord.

Het is echter belangrijk om te begrijpen dat het salt-hash-idee een specifieke reden heeft - om te voorkomen dat iemand met toegang tot de database het wachtwoord van iemand kent (het wordt als een moeilijk probleem beschouwd om de uitvoer van een hash-functie om te keren). Zo kan de DBA van de bank bijvoorbeeld niet inloggen op uw bankrekening, ook al heeft hij toegang tot alle kolommen.

U kunt het ook overwegen als u denkt dat uw gebruikers een gevoelig wachtwoord (bijvoorbeeld hun wachtwoord voor hun Gmail-account) als wachtwoord voor uw website zullen gebruiken.

IMHO is het niet altijd een beveiligingsfunctie die nodig is. Dus je moet nadenken of je het wel of niet wilt.

Zie dit artikel voor een goede samenvatting van dit mechanisme.

Bijwerken: Het is vermeldenswaard dat u voor extra beveiliging tegen gerichte aanvallen voor het omkeren van de hash van individuele wachtwoorden gebruik bcrypt , die willekeurig moeilijk te berekenen kan zijn. (Maar tenzij je echt bang bent voor een mysterieuze man in het zwart die zich op jouw specifieke database richt, denk ik dat sha1 goed genoeg is. Ik zou geen andere afhankelijkheid voor mijn project introduceren voor deze extra beveiliging. Dat gezegd hebbende, is er geen reden om sha1 niet te gebruiken 100 keer, wat een soortgelijk effect zou geven).



  1. SQL Auto-Increment door DateTime

  2. SQL, lege cellen afhandelen

  3. Lees PHP-sessiegegevens in node.js

  4. Kopieer enkele kolommen van een csv-bestand naar een tabel