PWDCOMPARE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

パスワードをハッシュし、そのハッシュを既存のパスワードのハッシュと比較します。 PWDCOMPARE を使用すると、空白の SQL Server ログイン パスワードや、よくある脆弱なパスワードを検索できます。

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

'clear_text_password'
暗号化されていないパスワードです。 clear_text_password is sysname (nvarchar(128)).

password_hash
パスワードの暗号化ハッシュです。 password_hashvarbinary (128)です。

version
SQL Server 2005 (9.x) 以降に移行されたが SQL Server 2000 (8.x) システムには変換されていない SQL Server 2000 (8.x) 以前のログインからの値を password_hash が表している場合に、1 に設定される可能性がある、古いパラメーターです。 バージョン intです。

注意事項

このパラメーターは旧バージョンとの互換性を維持するために提供されていますが、パスワード ハッシュ BLOB は独自のバージョンの説明を含んでいるため、無視されます。 この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。

戻り値の型

int

場合 1 を返しますのハッシュ、 clear_text_password と一致する、 password_hash パラメーター、および、そうでない場合は 0 です。

注釈

PWDCOMPARE 関数は、パスワード ハッシュの強度に対する脅威にはなりません。このテストは、最初のパラメーターとして渡されるパスワードを使用してログインしようとした場合に実行されるテストと同じテストです。

PWDCOMPARE 包含データベース ユーザーのパスワードを使用することはできません。 包含データベースに相当するものがありません。

アクセス許可

PWDENCRYPT はパブリックに使用できます。

sys.sql_logins の password_hash 列を調べるには CONTROL SERVER 権限が必要です。

A. パスワードがないログインを特定する

次の例では、パスワードがない 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)