Compartilhar via


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.

Ícone de vínculo de tópico 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.

    Observação sobre cuidadosCuidado

    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 ;

Consulte também

Referência

PWDENCRYPT (Transact-SQL)

Funções de segurança (Transact-SQL)