PWDCOMPARE (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

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 (8.x) darstellt, der in SQL Server 2005 (9.x) oder höher migriert, aber nie in das SQL Server 2000 (8.x)-System konvertiert wurde. version ist vom Datentyp int

Achtung

Dieser Parameter wird für die Abwärtskompatibilität bereitgestellt, wird jedoch ignoriert, da Kennworthash-BLOBs nun eigene Versionsbeschreibungen enthalten. Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Rückgabetypen

int

Gibt 1 zurück, wenn der Hash von clear_text_password mit dem Parameter password_hash übereinstimmt und gibt 0 (null) zurück, wenn dies nicht der Fall ist.

Bemerkungen

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 keine Entsprechung für eigenständige Datenbanken.

Berechtigungen

PWDENCRYPT steht für die Öffentlichkeit zur Verfügung.

Die CONTROL SERVER-Berechtigung ist erforderlich, um die Spalte password_hash 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 ;  

Siehe auch

PWDENCRYPT (Transact-SQL)
Sicherheitsfunktionen (Transact-SQL)