Bagikan melalui


PWDCOMPARE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

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

Sintaks

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

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.

Untuk memeriksa kolom password_hash sys.sql_login:

  • Untuk SQL Server 2019 (15.x) dan versi yang lebih lama, izin CONTROL SERVER diperlukan.
  • Untuk SQL Server 2022 (16.x) dan versi yang lebih baru, izin LIHAT DEFINISI YANG AMAN SECARA KRIPTOGRAFIS diperlukan.

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 ;  

PWDENCRYPT (T-SQL)
Fungsi Keamanan (T-SQL)
sys.sql_logins (T-SQL)