Delen via


PWDCOMPARE (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Hasht een wachtwoord en vergelijkt de hash met de hash van een bestaand wachtwoord. PWDCOMPARE kan worden gebruikt om te zoeken naar lege SQL Server-loginwachtwoorden of veelvoorkomende zwakke wachtwoorden.

Transact-SQL syntaxis-conventies

Syntaxis

PWDCOMPARE ( 'clear_text_password'  
   , password_hash   
   [ , version ] )  

Arguments

'clear_text_password'
Is het onversleutelde wachtwoord. clear_text_password is sysnaam (nvarchar(128)).

password_hash
Is de encryptiehash van een wachtwoord. password_hash is varbinair(128).

version
Verouderde parameter die op 1 kan worden gezet als password_hash een waarde vertegenwoordigt van een inlog eerder dan SQL Server 2000 (8.x) die is geïmporteerd naar SQL Server 2005 (9.x) of later, maar nooit is omgezet naar het SQL Server 2000 (8.x) systeem. De versie is Int.

Waarschuwing

Deze parameter wordt geleverd voor achterwaartse compatibiliteit, maar wordt genegeerd omdat wachtwoordhashblobs nu hun eigen versiebeschrijvingen bevatten. Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.

Retourtypen

int

Geeft 1 terug als de hash van de clear_text_password overeenkomt met de password_hash-parameter , en 0 als dat niet zo is.

Opmerkingen

De PWDVERGELIJKFUNCTIE vormt geen bedreiging voor de sterkte van wachtwoordhashes, omdat dezelfde test uitgevoerd kan worden door in te loggen met het wachtwoord dat als eerste parameter wordt opgegeven.

PWDCOMPARE kan niet worden gebruikt met de wachtwoorden van gebruikers van de opgenomen database. Er is geen equivalent van een besloten database.

Permissions

PWDENCRYPT is openbaar beschikbaar.

Om de password_hash kolom van sys.sql_logins te bekijken:

  • Voor SQL Server 2019 (15.x) en eerdere versies is de CONTROL SERVER-machtiging vereist.
  • Voor SQL Server 2022 (16.x) en latere versies is de toestemming VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION vereist.

Voorbeelden

Eén. Inloggegevens identificeren zonder wachtwoorden

Het volgende voorbeeld identificeert SQL Server-logins zonder wachtwoorden.

SELECT name FROM sys.sql_logins   
WHERE PWDCOMPARE('', password_hash) = 1 ;  

B. Zoeken naar veelvoorkomende wachtwoorden

Om te zoeken naar veelvoorkomende wachtwoorden die je wilt identificeren en wijzigen, geef je het wachtwoord als eerste parameter op. Voer bijvoorbeeld de volgende instructie uit om te zoeken naar een wachtwoord dat is gespecificeerd als password.

SELECT name FROM sys.sql_logins   
WHERE PWDCOMPARE('password', password_hash) = 1 ;  

PWDENCRYPT (Transact-SQL)
beveiligingsfuncties (Transact-SQL)
sys.sql_logins (Transact-SQL)