PWDCOMPARE (Transact-SQL)
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é. L'argument clear_text_password est de type sysname (nvarchar(128)).password_hash
Hachage de chiffrement d'un mot de passe. L'argument 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 qui a été migrée vers SQL Server 2005 ou version ultérieure, mais n'a jamais été converti vers le système SQL Server 2000. version est de type int.Attention Ce paramètre est fourni pour des raisons de compatibilité descendante, mais est ignoré étant donné que les objets blob de hachage de mot de passe contiennent maintenant leurs propres descriptions de version. Cette fonctionnalité sera supprimée dans la prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et modifiez dès que possible les applications qui utilisent actuellement cette fonctionnalité.
Types de retour
int
Retourne 1 si le hachage de clear_text_password correspond au paramètre password_hash et 0 dans le cas contraire.
Notes
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.
Autorisations
PWDENCRYPT est accessible à public.
L'autorisation CONTROL SERVER est obligatoire pour examiner la colonne password_hash de sys.sql_logins.
Exemples
A.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 ;