PWDCOMPARE (Transact-SQL)
Esegue l'hashing di una password e confronta l'hash con l'hash di una password esistente. È possibile utilizzare PWDCOMPARE per eseguire la ricerca di password di accesso di SQL Server vuote o di password comuni vulnerabili.
Convenzioni della 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 di cui è stata eseguita la migrazione a SQL Server 2005 o versione successiva ma che non è mai stato convertito nel sistema SQL Server 2000. 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 a partire dalla prossima versione di Microsoft SQL Server. Non utilizzare questa funzionalità in un nuovo progetto di sviluppo e modificare non appena possibile le 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 utilizzata con le password di utenti del database indipendente. Non esiste alcun database indipendente equivalente.
Autorizzazioni
PWDENCRYPT è disponibile per il ruolo public.
Per esaminare la colonna password_hash di sys.sql_logins, è richiesta l'autorizzazione CONTROL SERVER.
Esempi
A.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 ;