Partilhar 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.

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual).

Í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.

    Aviso

    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.

PWDCOMPARE não pode ser usado com as senhas dos usuários de banco de dados independente. Não há banco de dados independente equivalente.

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)