Dla bezpieczeństwa logowanie do mojej bieżącej aplikacji nie przechowuje parametrów przekazanych do metod logowania lub resetowania hasła. Wywołanie dziennika ma opcjonalny parametr, który to kontroluje, który po ustawieniu wartości true zastępuje obiekt parametrów przechowywanych parametrem [Redacted]
. Jasne, więc brakuje mi trochę danych, ale mam ich adresy IP i wolałbym nie ryzykować uzyskania czegoś tak wrażliwego w postaci zwykłego tekstu.
Jeśli naprawdę chcesz rejestrować tego rodzaju rzeczy, sugeruję, aby logując się podczas próby zalogowania, sprawdziłeś bazę danych dla użytkowników o nazwie pasującej do tego, co masz w polu nazwy użytkownika, i przechowujesz ją tylko wtedy, gdy masz taką zgodność. W przeciwnym razie po prostu przechowujesz go jako „nieznany użytkownik”. Możesz być fantazyjny, sprawdzając, czy ta wartość zawiera to lub cokolwiek, ale zawsze istnieje ryzyko, że otrzymasz kombinacje takie jak [Użytkownik] [Hasło] i [UserPas] [miecz], w którym to przypadku możesz sprawdzić względem adresu IP i wydedukować to przypadkowo zapisałeś początek czyjeś hasło w sposób wyraźny. Możesz to rozszerzyć na mało prawdopodobne, ale możliwe [Użytkownik] [Hasło] i [Hasło użytkownika] [??], w którym to przypadku możesz zobaczyć „nieudane logowanie według hasła użytkownika”, a następnie „pomyślne logowanie użytkownika” i wydedukować wszystkiehasła użytkownika. Ogólnie, dla bezpieczeństwa powiedziałbym, że nie loguję nazw użytkowników, chyba że logowanie się powiedzie.
Edytuj, aby dodać:
Większość argumentów publikowanych przez użytkowników w celu zalogowania nazwy użytkownika w przypadku nieudanych prób logowania jest, moim zdaniem, lepiej obsługiwana innymi metodami.
Na przykład powiedziano, że gdy klient pyta „dlaczego nie mogę się zalogować?”, Zalogowane nazwy użytkowników pozwalają wskazać literówki. To prawda, ale nie warto ryzykować także wyłapywania haseł; Zrobiłbym to, przekierowując użytkownika z powrotem do formularza logowania w przypadku niepowodzenia, podświetlając pole nazwy użytkownika i ponownie wypełniając go tym, co wpisał, aby mogli sami zobaczyć.
Kolejnym argumentem było to, że pozwala zidentyfikować próby włamania; ciąg błędów w stosunku do jednej nazwy użytkownika może być próbą brutalnego wymuszenia hasła. Zrobiłbym to, mając kolumnę „BadLogins” w tabeli Użytkownicy, która jest zwiększana za każdym razem, gdy logowanie się nie powiedzie z nazwą użytkownika pasującą do tego użytkownika, i jest resetowane do zera po udanym logowaniu, po poinformowaniu użytkownika „były x nieudane próby logowania od ostatniego logowania ”i doradzanie im, co zrobić, jeśli nie sądzą, że próby były od nich. Jeśli chcesz być naprawdę dokładny, możesz mieć inną kolumnę, która przechowuje ostatnią wartość kolumny BadLogins, nawet po udanym logowaniu, i / lub kolumnę, która przechowuje najwyższą w historii wartość tej kolumny i / lub kolumnę, która przechowuje całkowitą liczbę nieudanych prób logowania na tym koncie.