Aracılığıyla paylaş


PWDCOMPARE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bir şifreyi hash eder ve bu hash'i mevcut bir şifrenin hash'iyle karşılaştırır. PWDCOMPR, boş SQL Server giriş şifrelerini veya yaygın zayıf şifreleri aramak için kullanılabilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

'clear_text_password'
Şifresiz şifre. clear_text_passwordSysname'dir (nvarchar(128)).

password_hash
Bir şifrenin şifreleme hash'ıdır. password_hashvarbinar(128)'dir.

version
Eğer SQL Server 2000 (8.x) öncesinde SQL Server 2005 (9.x) veya daha sonrasına taşınmış ancak SQL Server 2000 (8.x) sistemine dönüştürülmemiş bir girişten gelen değeri temsil ediyorsa password_hash 1 olarak ayarlanabilen eski bir parametre. versiyonuint.

Dikkat

Bu parametre geriye doğru uyumluluk için sağlanmıştır, ancak şifre hash blob'larının artık kendi sürüm açıklamalarını içermesi nedeniyle göz ardı edilir. Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.

Dönüş Türleri

int

clear_text_password'nin hash'i password_hash parametreyle eşleşiyorsa 1, karşılamazsa 0 döndürür.

Açıklamalar

PWDCOMPARE fonksiyonu, şifre hash'larının gücüne tehdit oluşturmaz çünkü aynı test, ilk parametre olarak verilen şifreyle giriş yapmaya çalışarak yapılabilir.

PWDCOMPR , içinde bulunan veritabanı kullanıcılarının şifreleriyle kullanılamaz. Bir veritabanı karşılığı yoktur.

Permissions

PWDENCRYPT halka açıktır.

sys.sql_logins'inpassword_hash sütununu incelemek için:

  • SQL Server 2019 (15.x) ve önceki sürümler için CONTROL SERVER izni gereklidir.
  • SQL Server 2022 (16.x) ve sonraki sürümler için, VIEW ANY CRYPTOGRAPHICALLY SECURED TANIM'ı izni gereklidir.

Örnekler

A. Şifresiz girişleri tanımlama

Aşağıdaki örnek, şifresi olmayan SQL Server girişlerini tanımlar.

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

B. Yaygın şifreleri arıyor

Tanımlamak ve değiştirmek istediğiniz yaygın şifreleri aramak için, şifreyi ilk parametre olarak belirtin. Örneğin, aşağıdaki ifadeyi çalıştırarak 'de belirtilen bir şifre passwordarayın.

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

PWDENCRYPT (Transact-SQL)
Güvenlik İşlevleri (Transact-SQL)
sys.sql_girişler (Transact-SQL)