PWDCOMPARE (Transact-SQL)
Führt Hashing für ein Kennwort aus und vergleicht den Hash mit dem Hash eines vorhandenen Kennworts. PWDCOMPARE kann verwendet werden, um nach leeren SQL Server-Anmeldekennwörtern oder allgemeinen unsicheren Kennwörtern zu suchen.
Transact-SQL-Syntaxkonventionen
Syntax
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
Argumente
' clear_text_password '
Das unverschlüsselte Kennwort. clear_text_password ist vom Datentyp sysname (nvarchar(128)).password_hash
Der Verschlüsselungshash eines Kennworts. password_hash ist vom Datentyp varbinary(128).version
Veralteter Parameter, der auf 1 festgelegt werden kann, wenn password_hash einen Wert einer Anmeldung von einer Version vor SQL Server 2000 darstellt, der zu SQL Server 2005 oder höher migriert wurde, aber nie in das SQL Server 2000-System konvertiert wurde. version ist vom Datentyp int.Vorsicht Dieser Parameter wird für die Abwärtskompatibilität bereitgestellt, wird jedoch ignoriert, da Kennworthash-BLOBs nun eigene Versionsbeschreibungen enthalten. Diese Funktion wird in der nächsten Version von Microsoft SQL Server entfernt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie so bald wie möglich das Ändern von Anwendungen, in denen es zurzeit verwendet wird.
Rückgabetypen
int
Gibt 1 zurück, wenn der Hash des clear_text_password mit dem password_hash-Parameter übereinstimmt, andernfalls 0.
Hinweise
Die PWDCOMPARE-Funktion stellt keine Bedrohung der Sicherheit von Kennworthashs dar, da der gleiche Test ausgeführt werden kann, indem sich ein Benutzer mit dem als erstem Parameter bereitgestellten Kennwort anmeldet.
PWDCOMPARE kann nicht mit den Kennwörtern der Benutzer eigenständiger Datenbanken verwendet werden. Es gibt kein Äquivalent zur eigenständigen Datenbank.
Berechtigungen
PWDENCRYPT ist für public verfügbar.
Die CONTROL SERVER-Berechtigung ist erforderlich, um die password_hash-Spalte von sys.sql_logins zu untersuchen.
Beispiele
A.Identifizieren von Anmeldungen, die keine Kennwörter aufweisen
Im folgenden Beispiel werden SQL Server-Anmeldungen identifiziert, die keine Kennwörter aufweisen.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
B.Suchen nach allgemeinen Kennwörtern
Um nach allgemeinen Kennwörtern zu suchen, geben Sie das Kennwort als ersten Parameter an. Führen Sie z. B. die folgende Anweisung aus, um nach einem mit password angegebenen Kennwort zu suchen.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;