PWDCOMPARE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Хэширует пароль и сравнивает хэш с хэшем существующего пароля. PWDCOMPARE можно использовать для поиска пустых паролей для входа SQL Server или распространенных слабых паролей.
Соглашения о синтаксисе Transact-SQL
Синтаксис
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
Аргументы
' clear_text_password '
Незашифрованный пароль. Аргумент clear_text_password имеет тип sysname (nvarchar(128)).
password_hash
Хэш шифрования пароля. Аргумент password_hash имеет тип varbinary(128).
version
Устаревший параметр, который может быть задан в значение 1, если password_hash представляет значение из имени входа до SQL Server 2000 (8.x), перенесенного в SQL Server 2005 (9.x) или более поздней версии, но никогда не преобразован в систему SQL Server 2000 (8.x). Аргумент version имеет тип int.
Внимание
Этот параметр предназначен для обеспечения обратной совместимости, однако он пропускается, так как теперь большие двоичные объекты хэшей паролей содержат собственные описания версий. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Типы возвращаемых данных
int
Возвращает значение 1, если хэш параметра clear_text_password совпадает со значением параметра password_hash, или значение 0 в противном случае.
Замечания
Функция PWDCOMPARE — это не угроза устойчивости хэшей паролей, потому что этот же самый тест можно было бы выполнить, если попытаться использовать для входа пароль, заданный как первый параметр.
PWDCOMPARE нельзя использовать с паролями пользователей автономных баз данных. Какой-либо эквивалент для автономной базы данных отсутствует.
Разрешения
Функция PWDENCRYPT общедоступна.
Чтобы проверить столбец password_hash sys.sql _logins:
- Для SQL Server 2019 (15.x) и более ранних версий требуется разрешение CONTROL SERVER .
- Для SQL Server 2022 (16.x) и более поздних версий требуется разрешение VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION .
Примеры
А. Выявление имен входа, у которых нет паролей
В следующем примере определяются имена входа SQL Server, у которых нет паролей.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
B. Поиск распространенных простых паролей
Для поиска распространенных простых паролей, которые требуется выявить и изменить, задайте пароль как первый параметр. Например, можно выполнить следующую инструкцию для поиска пароля, заданного как password
.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;
Связанный контент
PWDENCRYPT (Transact-SQL)
Функция безопасности (Transact-SQL)
sys.sql_logins (Transact-SQL)