T-SQL: Gesalzene Passwörter
Ich bin auf der Suche nach ein Beispiel von Salzen der Passwörter innerhalb eines T-SQL-Gespeicherte Prozedur. Und natürlich die passenden proc-zum überprüfen eines Benutzers.
CREATE PROC ChangePassword(@Benutzername vom Datentyp nVarChar(50), @Passwort nVarChar(50))
CREATE PROC ValidateUser(@Benutzername vom Datentyp nVarChar(50), @Passwort nVarChar(50))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ich werde gehen auf ein Glied hier und sagen, dass hashing der Passwörter in der Datenbank ist in der Regel eine schlechte Praxis im Hinblick auf Sicherheit. Sie würden nicht geschützt werden gegen-traffic-Sniffer beobachten den Verkehr auf der Datenbank. Der einzige Weg, um gegen zu schützen, ist, um sicherzustellen, dass Ihre Verbindung zu der Datenbank war verschlüsselt, was in der Regel bedeutet, dass alle anderen traffic auf der Datenbank werden verschlüsselt. Es ist möglich, dies zu umgehen, aber die bessere Lösung ist, um die Anwendung(en) tun das hashing.
Als Sam Safran angegeben, können Sie die Hashbytes Funktionen, um SHA1-hashing. Wenn Sie wollen eine bessere algorithmen müssten Sie zum erstellen einer CLR-Prozedur. Salzen würde die Speicherung einer kryptografisch zufälligen Wert für jeden Benutzer, dann anfügen, dass der Wert das Passwort ein und es läuft durch Hashbytes:
Denken Sie daran, dass das Salz sollte kryptographisch zufällig, so würde ich nicht empfehlen die Verwendung der NewId(). Stattdessen möchte ich generieren, die mit so etwas wie .NET die RNGCryptoServiceProvider-Klasse.
Können Sie HASHBYTES, um SHA1-ein string, und NEWID() zu generieren, die eine zufällige Guid als Salz.
newid
ist nicht kryptographisch stark. Weder mit MD5 oder SHA1, aber alles in Grad...haben Sie sich überlegt Salzen passswords auf Anwendungsebene.die server-hardware zur app-Server esp. Cpu könnte gewesen mehr geeignet als der dbmss zu verarbeiten, hashing und salting?