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.
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.Advertencia 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 ;