Condividi tramite


PWDCOMPARE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Esegue l'hashing di una password e confronta l'hash con l'hash di una password esistente. Si può usare PWDCOMPARE per eseguire la ricerca di password di accesso di SQL Server vuote o di password comuni vulnerabili.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

' clear_text_password '
Password non crittografata. clear_text_password è di tipo sysname (nvarchar(128)).

password_hash
Hash di crittografia di una password. password_hash è di tipo varbinary(128).

version
Parametro obsoleto che può essere impostato su 1 se password_hash rappresenta un valore relativo a un account di accesso di una versione precedente a SQL Server 2000 (8.x) di cui è stata eseguita la migrazione a SQL Server 2005 (9.x) o versioni successive, ma che non è mai stato convertito nel sistema SQL Server 2000 (8.x). version è di tipo int.

Attenzione

Questo parametro viene fornito per la compatibilità con le versioni precedenti, ma viene ignorato poiché ora i BLOB dell'hash della password contengono le descrizioni delle versioni. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Tipi restituiti

int

Restituisce 1 se l'hash di clear_text_password corrisponde al parametro password_hash. In caso contrario, restituisce 0.

Osservazioni:

La funzione PWDCOMPARE non costituisce un rischio per la sicurezza degli hash delle password, in quanto lo stesso test può essere eseguito tentando di accedere con la password fornita come primo parametro.

PWDCOMPARE non può essere usata con le password di utenti del database indipendente. Non esiste un equivalente per i database indipendenti.

Autorizzazioni

PWDENCRYPT è disponibile per il ruolo public.

Per esaminare la colonna password_hash di sys.sql_logins:

  • Per SQL Server 2019 (15.x) e versioni precedenti, è necessaria l'autorizzazione CONTROL SERVER .
  • Per SQL Server 2022 (16.x) e versioni successive, è necessaria l'autorizzazione VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION .

Esempi

R. Identificazione degli account di accesso che non dispongono di password

Nell'esempio seguente vengono identificati gli account di accesso di SQL Server che non dispongono di password.

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

B. Ricerca di password comuni

Per eseguire la ricerca di password comuni che si desidera identificare e cambiare, specificare la password come primo parametro. Eseguire ad esempio l'istruzione seguente per eseguire la ricerca di una password specificata come password.

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

PWDENCRYPT (Transact-SQL)
Funzioni di sicurezza (Transact-SQL)
sys.sql_logins (Transact-SQL)