Sdílet prostřednictvím


PWDCOMPARE (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Hashuje heslo a porovnává hash s hashem existujícího hesla. PWDCOMPARE lze použít k vyhledávání prázdných přihlašovacích hesel pro SQL Server nebo běžných slabých hesel.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

'clear_text_password'
Je to nešifrované heslo. clear_text_password je sysname (nvarchar(128)).

password_hash
Je šifrovací hash hesla. password_hash je varbinární(128).

version
Zastaralý parametr, který lze nastavit na 1, pokud password_hash představuje hodnotu z přihlášení staršího než SQL Server 2000 (8.x), který byl migrován na SQL Server 2005 (9.x) nebo starší, ale nikdy nebyl převeden do systému SQL Server 2000 (8.x). Verze je int.

Upozornění

Tento parametr je zajištěn pro zpětnou kompatibilitu, ale je ignorován, protože hashovací bloby hesel nyní obsahují vlastní popisy verzí. Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají.

Návratové typy

int

Vrátí 1, pokud hash clear_text_password odpovídá parametru password_hash , a 0, pokud neodpovídá.

Poznámky

Funkce PWDCOMPARE není hrozbou pro sílu hashů hesel, protože stejný test lze provést pokusem o přihlášení pomocí hesla uvedeného jako prvního parametru.

PWDCOMPARE nelze použít s hesly uživatelů databází. Neexistuje žádný ekvivalent v databázi.

Povolení

PWDENCRYPT je veřejně dostupný.

Pro prozkoumání sloupce password_hashsys.sql_logins:

  • Pro SQL Server 2019 (15.x) a starší verze je vyžadováno oprávnění CONTROL SERVER .
  • Pro verze SQL Server 2022 (16.x) a pozdější je vyžadováno povolení ZOBRAZIT JAKOUKOLI KRYPTOGRAFICKY ZABEZPEČENOU DEFINICI .

Examples

A. Identifikace přihlašovacích údajů bez hesel

Následující příklad identifikuje přihlášení k SQL Serveru, která nemají hesla.

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

B. Hledání běžných hesel

Pro vyhledávání běžných hesel, která chcete identifikovat a změnit, zadejte heslo jako první parametr. Například proveďte následující příkaz pro vyhledávání hesla zadaného jako password.

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

PWDENCRYPT (Transact-SQL)
Funkce zabezpečení (Transact-SQL)
sys.sql_přihlášení (Transact-SQL)