Udostępnij za pośrednictwem


PWDCOMPARE (Transact-SQL)

Mieszania hasła i porównuje wartość mieszania do mieszania istniejące hasło.PWDCOMPARE może służyć do wyszukiwania puste SQL Server hasła logowania lub wspólne słabych haseł.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • 'clear_text_password'
    To hasło nieszyfrowane.clear_text_passwordis sysname (nvarchar(128)).

  • 'password_hash'
    Jest mieszania szyfrowanie hasła.password_hash is varbinary(128).

  • version
    Parametr opcjonalny, który może być zestaw na 1, gdy password_hash reprezentuje wartość identyfikatora logowania starszych niż SQL Server 2000 , został zmigrowany do SQL Server 2005 lub SQL Server 2008 , ale nigdy nie są konwertowane na SQL Server 2000 systemu.versionis int.

    Ważna informacjaWażne:

    Ten parametr jest niezalecane i może być usunięta w przyszłej wersji programu SQL Server.

Zwracane typy

int

Zwraca wartość 1, jeśli wartość skrótu clear_text_password pasuje do password_hash parametr i 0 w przeciwnym razie nie.

Uwagi

Kiedy dokonywana jest migracja wystąpienie SQL Server 7.0 do SQL Server 2000 lub nowszej wersjawartość skrótu hasła nie ulega zmianie i musi być version parametr test hasło.Po zakończeniu migracji, podczas logowania jest używany pierwszy czasmieszania hasła jest aktualizowany do formatu, który został najpierw użyty w SQL Server 2000.Następnie nie wymaga PWDCOMPARE version parametr dla tego logowania.

PWDCOMPARE funkcja nie jest zagrożenie przeciwko siły hasła, ponieważ samo badanie można wykonać próbując zalogować się przy użyciu hasła, jako pierwszy parametr.

Uprawnienia

Dostępna jest PWDENCRYPT public.

Badanie wymagane jest uprawnienie Kontrola serwera password_hash kolumna sys.sql_logins.

Przykłady

A.Identyfikowanie logowania, które nie są chronione hasłem w SQL Server 2005 lub SQL Server 2008

Poniższy przykład identyfikuje SQL Server logowania, które mają nie hasła.Pierwszy WHERE klauzula sprawdza wartość skrótu hasła wartości, które są przechowywane w formacie używanym przez SQL Server 2000 i nowsze wersje.Drugi WHEREzawieraklauzula version parametru do sprawdzenia wartości, które są nadal przechowywane w formacie, który jest używany przez wersji wartość skrótu hasła SQL Server starsze niż SQL Server 2000.

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

B.Identyfikowanie logowania, które nie są chronione hasłem w SQL Server 2000

sys.sql_loginstabela nie istnieje w SQL Server 2000.Można wykonać następującą instrukcja przeciwko wystąpienie SQL Server 2000 do identyfikowania SQL Server logowania, które mają nie hasła.

SELECT name FROM syslogins 
WHERE PWDCOMPARE ('', password) = 1 
OR PWDCOMPARE('', password, 1) = 1  ;

C.Trwa wyszukiwanie haseł wspólnych

Aby wyszukać wspólnych haseł, które chcesz zidentyfikować i zmienić, należy określić hasło jako pierwszy parametr.Na przykład wykonać następującą instrukcja wyszukiwać określone jako hasło password.

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