Condividi tramite


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.

Icona di collegamento a un argomento 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.

    Nota di attenzioneAttenzione

    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 ;

Vedere anche

Riferimento

PWDENCRYPT (Transact-SQL)

Funzioni di sicurezza (Transact-SQL)