Bagikan melalui


PWDCOMPARE (Transact-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Hash kata sandi dan membandingkan hash dengan hash kata sandi yang ada. PWDCOMPARE dapat digunakan untuk mencari kata sandi masuk SQL Server kosong atau kata sandi lemah umum.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

' clear_text_password '
Adalah kata sandi yang tidak terenkripsi. clear_text_password adalah sysname (nvarchar(128)).

password_hash
Adalah hash enkripsi kata sandi. password_hash adalah varbinary(128).

versi
Parameter usang yang dapat diatur ke 1 jika password_hash mewakili nilai dari login yang lebih lama dari SQL Server 2000 (8.x) yang dimigrasikan ke SQL Server 2005 (9.x) atau yang lebih baru tetapi tidak pernah dikonversi ke sistem SQL Server 2000 (8.x). versi int.

Perhatian

Parameter ini disediakan untuk kompatibilitas mundur, tetapi diabaikan karena blob hash kata sandi sekarang berisi deskripsi versi mereka sendiri. Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Jenis Kembalian

int

Mengembalikan 1 jika hash clear_text_password cocok dengan parameter password_hash , dan 0 jika tidak.

Keterangan

Fungsi PWDCOMPARE bukan ancaman terhadap kekuatan hash kata sandi karena pengujian yang sama dapat dilakukan dengan mencoba masuk menggunakan kata sandi yang disediakan sebagai parameter pertama.

PWDCOMPARE tidak dapat digunakan dengan kata sandi pengguna database mandiri. Tidak ada database yang berisi yang setara.

Izin

PWDENCRYPT tersedia untuk umum.

Izin CONTROL SERVER diperlukan untuk memeriksa kolom password_hash sys.sql_logins.

Contoh

J. Mengidentifikasi login yang tidak memiliki kata sandi

Contoh berikut mengidentifikasi login SQL Server yang tidak memiliki kata sandi.

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

B. Mencari kata sandi umum

Untuk mencari kata sandi umum yang ingin Anda identifikasi dan ubah, tentukan kata sandi sebagai parameter pertama. Misalnya, jalankan pernyataan berikut untuk mencari kata sandi yang ditentukan sebagai password.

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

Lihat Juga

PWDENCRYPT (T-SQL)
Fungsi Keamanan (T-SQL)