PWDCOMPARE (Transact-SQL)
Obtém o valor hash de uma senha e compara-o com o de uma senha existente. PWDCOMPARE pode ser usado para procurar senhas de logon em branco do SQL Server ou senhas fracas comuns.
Convenções da sintaxe Transact-SQL
Sintaxe
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
Argumentos
' clear_text_password '
É a senha não criptografada. clear_text_password é sysname (nvarchar(128)).password_hash
É o hash de criptografia de uma senha. password_hash is varbinary(128).version
Parâmetro obsoleto que poderá ser definido como 1 se password_hash representar um valor de um logon anterior a SQL Server 2000 que foi migrado para SQL Server 2005 ou posterior, mas nunca convertido no sistema SQL Server 2000. version é int.Cuidado Esse parâmetro é fornecido para fins de compatibilidade com versões anteriores, mas é ignorado, pois os blobs de hash de senha agora contêm suas próprias descrições de versão. Esse recurso será removido na próxima versão do Microsoft SQL Server. Não utilize esse recurso em desenvolvimentos novos e modifique, assim que possível, os aplicativos que atualmente o utilizam.
Tipos de retorno
int
Retorna 1 se o hash de clear_text_password corresponder ao parâmetro password_hash, e 0 se não corresponder.
Comentários
A função PWDCOMPARE não é uma ameaça contra a força de hashes de senha porque o mesmo teste pode ser executado por meio de tentativa de logon usando a senha fornecida como o primeiro parâmetro.
Não é possível usar PWDCOMPARE com as senhas de usuários de bancos de dados independentes. Não existe nenhum equivalente a banco de dados independente.
Permissões
PWDENCRYPT está disponível para public.
A permissão CONTROL SERVER é necessária para examinar a coluna password_hash de sys.sql_logins.
Exemplos
A.Identificando logons que não têm nenhuma senha
O exemplo a seguir identifica logons do SQL Server que não têm nenhuma senha.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
B.Procurando senhas comuns
Para procurar senhas comuns que você deseja identificar e alterar, especifique a senha como o primeiro parâmetro. Por exemplo, execute a instrução a seguir para procurar uma senha especificada como password.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;