PWDCOMPARE (Transact-SQL)
パスワードをハッシュして既存のパスワードのハッシュと比較します。 PWDCOMPARE を使用すると、空白の SQL Server ログイン パスワードや、よくある脆弱なパスワードを検索できます。
構文
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
引数
' clear_text_password '
暗号化されていないパスワードです。 clear_text_password は sysname (nvarchar(128)) です。password_hash
パスワードの暗号化ハッシュです。 password_hash のデータ型は varbinary(128) です。version
互換性のために残されているパラメーターです。password_hash が SQL Server 2000 より前のログイン (SQL Server 2005 以降のバージョンに移行されたが、SQL Server 2000 システムには変換されていないログイン) の値を表す場合は、1 に設定します。 version のデータ型は int です。注意 このパラメーターは旧バージョンとの互換性を維持するために提供されていますが、パスワード ハッシュ BLOB は独自のバージョンの説明を含んでいるため、無視されます。 この機能は、Microsoft SQL Server の次のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。
戻り値の型
int
clear_text_password のハッシュが password_hash パラメーターに一致する場合は 1 を返します。一致しない場合は 0 を返します。
説明
PWDCOMPARE 関数は、パスワード ハッシュの強度に対する脅威にはなりません。このテストは、最初のパラメーターとして渡されるパスワードを使用してログインしようとした場合に実行されるテストと同じテストです。
PWDCOMPARE は、包含データベース ユーザーのパスワードで使用できません。 包含データベースと同等のものはありません。
権限
PWDENCRYPT は、public で使用できます。
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 ;