Partilhar via


PWDCOMPARE (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Faz um hash de uma palavra-passe e compara o hash com o hash de uma palavra-passe existente. O PWDCOMPARE pode ser usado para procurar palavras-passe de login SQL Server em branco ou palavras-passe fracas comuns.

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

'clear_text_password'
É a palavra-passe não encriptada. clear_text_password é sysname (nvarchar(128)).

password_hash
É o hash de encriptação de uma palavra-passe. password_hash é varbinary(128).

Versão
Parâmetro obsoleto que pode ser definido para 1 se password_hash representar um valor de um login anterior ao SQL Server 2000 (8.x) que foi migrado para SQL Server 2005 (9.x) ou posterior, mas nunca convertido para o sistema SQL Server 2000 (8.x). A versão é int.

Atenção

Este parâmetro é fornecido para compatibilidade retroativa, mas é ignorado porque os blobs de hash de palavra-passe agora contêm as suas próprias descrições de versão. Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.

Tipos de devolução

int

Devolve 1 se o hash do clear_text_password corresponder ao parâmetro password_hash , e 0 se não corresponder.

Observações

A função PWDCOMPARE não representa uma ameaça à força dos hashes de palavra-passe porque o mesmo teste poderia ser realizado tentando iniciar sessão usando a palavra-passe fornecida como primeiro parâmetro.

O PWDCOMPARE não pode ser usado com as palavras-passe dos utilizadores de bases de dados contidas. Não existe um equivalente a uma base de dados contida.

Permissions

O PWDENCRYPT está disponível ao público.

Para examinar a coluna password_hash de sys.sql_logins:

  • Para o SQL Server 2019 (15.x) e versões anteriores, é necessária a permissão do CONTROL SERVER .
  • Para SQL Server 2022 (16.x) e versões posteriores, é necessária a permissão VIEW ANY CRYPTOGRAPHICALLY SECURE DEFINITION .

Examples

A. Identificar logins sem palavras-passe

O exemplo seguinte identifica logins do SQL Server que não têm palavras-passe.

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

B. Procura de palavras-passe comuns

Para procurar palavras-passe comuns que queira identificar e alterar, especifique a palavra-passe como primeiro parâmetro. Por exemplo, execute a seguinte instrução para procurar uma palavra-passe especificada como password.

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

PWDENCRYPT (Transact-SQL)
Funções de segurança (Transact-SQL)
sys.sql_logins (Transact-SQL)