Partage via


PWDCOMPARE (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Hache un mot de passe et compare le hachage au hachage d'un mot de passe existant. PWDCOMPARE peut être utilisé pour rechercher les mots de passe de connexion SQL Server vides ou les mots de passe faibles courants.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

' clear_text_password '
Mot de passe non chiffré. clear_text_password est de type sysname (nvarchar(128)).

password_hash
Hachage de chiffrement d'un mot de passe. password_hash est de type varbinary(128).

version
Paramètre obsolète auquel la valeur 1 peut être affectée si password_hash représente une valeur d’un compte de connexion antérieur à SQL Server 2000 (8.x) qui a été migrée vers SQL Server 2005 (9.x) ou version ultérieure, mais n’a jamais été converti vers le système SQL Server 2000 (8.x). version est de type int.

Attention

Ce paramètre est fourni pour des raisons de compatibilité descendante, mais est ignoré car les objets blob de hachage de mot de passe contiennent maintenant leurs propres descriptions de version. Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Types de retour

int

Renvoie 1 si le hachage de clear_text_password correspond au paramètre password_hash, et 0 si ce n’est pas le cas.

Remarques

La fonction PWDCOMPARE ne constitue pas une menace pour la force des hachages de mot de passe car le même test pourrait être effectué en essayant de se connecter à l'aide du mot de passe fourni en tant que premier paramètre.

PWDCOMPARE ne peut pas être utilisé avec les mots de passe des utilisateurs de bases de données autonomes. Il n'existe aucun équivalent de base de données autonome.

Autorisations

PWDENCRYPT est accessible publiquement.

L'autorisation CONTROL SERVER est requise pour examiner la colonne password_hash de sys.sql_logins.

Exemples

R. Identification de comptes de connexion qui n'ont pas de mots de passe

L'exemple suivant identifie les comptes de connexion SQL Server qui n'ont pas de mots de passe.

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

B. Recherche de mots de passe communs

Pour rechercher les mots de passe communs que vous souhaitez identifier et modifier, spécifiez le mot de passe en tant que premier paramètre. Par exemple, exécutez l'instruction suivante pour rechercher un mot de passe spécifié comme password.

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

Voir aussi

PWDENCRYPT (Transact-SQL)
Fonctions de sécurité (Transact-SQL)