Widziałem różne pytania dotyczące tego problemu, ale jest kilka pytań, które nie zostały zadane. Jeśli użytkownik zapomni hasła, chciałbym, aby mogli zresetować go za pomocą swojego adresu e-mail (np. Nie ma pytania/odpowiedzi bezpieczeństwa). Hasło jest przechowywane jako solony skrót, więc nie ma możliwości odzyskania. Zamiast tego chciałbym, aby użytkownik wprowadził nowe hasło po potwierdzeniu, że zażądał resetu.Resetowanie hasła ASP.NET - problemy bezpieczeństwa?
Powszechną metodą, co zostało wspomniane jest po prostu:
1) Utwórz losową Guid/kryptograficznie silny liczbę losową
2) Napisz unikalny adres URL zawierający liczbę losową do poczty elektronicznej użytkownika zajęcia
3) Po potwierdzeniu, użytkownik jest proszony o zmianę hasła
Jednak czy nie jest to otwarte na atak MITM
? Jeśli wysyłanie haseł tymczasowych przez Internet do wiadomości e-mail jest niebezpieczne, jaka jest różnica między tym, a wysłaniem unikalnego adresu URL, do którego osoba atakująca może się dostać? Czy przegapiłem kluczowy krok, który sprawi, że ten system będzie bezpieczniejszy (czy jest lepszy sposób na zresetowanie hasła)?
Dzięki
podoba mi się pomysł z próbą zapewnienia linkiem potwierdzającym kliknięcie pochodzi z tego samego komputera, co początkowy zresetować żądanie. –
Jeśli chodzi o aspekt IP, z pewnością ta część byłaby nieistotna? Jako atakujący, twierdzę, żebym sam zapomniał hasła, dlatego żądanie resetowania hasła pochodzi z mojego komputera (atakującego). Wykonując atak MITM, przechwyciłbym wiadomość e-mail, kliknij na link i zmień hasło, ponieważ nadal widzi mój adres IP. – keyboardP
Prawdopodobnie, ale zakłada to, że atakujący już skompromitował konto e-mail. IP byłby tylko jednym małym podzbiorem informacji identyfikacyjnych. Mogą być stosowane inne parametry, które zwiększą złożoność hasza. Klucz nie polegałby na żadnej metodzie, ponieważ każdy musi być narażony na szwank. Im więcej jest wymaganych, tym trudniej jest przejść. W pewnym momencie staje się to kwestią wysiłku a rezultatu. –