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ł.
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ż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 ;