Compartir a través de


PWDCOMPARE (Transact-SQL)

Obtiene el valor hash de una contraseña y lo compara con el de otra existente. PWDCOMPARE se puede usar para buscar contraseñas de inicio de sesión de SQL Server en blanco o contraseñas poco seguras comunes.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • ' clear_text_password '
    Es la contraseña sin cifrar. clear_text_password es de tipo sysname (nvarchar(128)).

  • password_hash
    Es el valor hash de cifrado de una contraseña. password_hash es de tipo varbinary(128).

  • version
    Parámetro desusado que se puede establecer en 1 si password_hash representa un valor de un inicio de sesión anterior a SQL Server 2000 que se migró a SQL Server 2005 o posterior pero que nunca se convirtió al sistema de SQL Server 2000. version es de tipo int.

    Nota de advertenciaAdvertencia

    Este parámetro se proporciona por compatibilidad con las versiones anteriores, pero se omite porque los blobs de hash de contraseña contienen ahora su propia descripción de versión. Esta característica se quitará en la versión siguiente de Microsoft SQL Server. No utilice esta característica en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que actualmente la utilizan.

Tipos de valores devueltos

int

Devuelve 1 si el valor hash de clear_text_password coincide con el parámetro password_hash y 0 si no coincide.

Comentarios

La función PWDCOMPARE no es una amenaza contra la seguridad de los valores hash de las contraseñas porque podría realizarse la misma prueba intentando iniciar sesión con la contraseña proporcionada como primer parámetro.

PWDCOMPARE no se puede utilizar con las contraseñas de usuarios de base de datos independiente. No hay equivalente de base de datos independiente.

Permisos

PWDENCRYPT está disponible para public.

Se requiere el permiso CONTROL SERVER para examinar la columna password_hash de sys.sql_logins.

Ejemplos

A.Identificar los inicios de sesión que no tienen contraseñas

El ejemplo siguiente identifica los inicios de sesión de SQL Server que no tienen contraseñas.

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

B.Buscar contraseñas comunes

Para buscar contraseñas comunes que desee identificar y cambiar, especifique la contraseña como primer parámetro. Por ejemplo, ejecute la instrucción siguiente para buscar una contraseña especificada como password.

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

Vea también

Referencia

PWDENCRYPT (Transact-SQL)

Funciones de seguridad (Transact-SQL)