Tôi đã nhìn thấy nhiều câu hỏi khác nhau về vấn đề này, nhưng có một số câu hỏi chưa được hỏi. Nếu người dùng quên mật khẩu của họ, tôi muốn họ có thể đặt lại mật khẩu chỉ với địa chỉ email của họ (nghĩa là không có câu hỏi/câu trả lời bảo mật). Mật khẩu được lưu trữ dưới dạng băm muối, vì vậy không thể khôi phục được. Thay vào đó, tôi chỉ muốn người dùng nhập mật khẩu mới sau khi xác nhận rằng họ đã yêu cầu đặt lại.Đặt lại mật khẩu ASP.NET - vấn đề bảo mật?
Một phương pháp phổ biến mà được đề cập là chỉ đơn giản là:
1) Tạo một ngẫu nhiên Guid/được mã hóa mạnh mẽ số ngẫu nhiên
2) Gửi một URL duy nhất có chứa các số ngẫu nhiên để email của người dùng giải quyết
3) Khi khẳng định, người dùng được yêu cầu thay đổi mật khẩu
Tuy nhiên, không phải là điều này mở cho một cuộc tấn công MITM
? Nếu gửi một mật khẩu tạm thời qua internet đến một email là không an toàn, sự khác biệt giữa làm điều đó và chỉ đơn giản là gửi một URL duy nhất mà kẻ tấn công có thể điều hướng đến là gì? Tôi đã bỏ lỡ một bước quan trọng ở đâu đó sẽ làm cho hệ thống này an toàn hơn (Hay có cách nào tốt hơn để đặt lại mật khẩu)?
Cảm ơn
tôi thích ý tưởng của cố gắng để đảm bảo tính liên kết xác nhận nhấp chuột xuất phát từ cùng một máy tính như ban đầu yêu cầu đặt lại. –
Về khía cạnh IP, chắc chắn rằng một phần sẽ không liên quan? Là kẻ tấn công, tôi sẽ tự quên mật khẩu, do đó yêu cầu đặt lại mật khẩu đến từ máy tính của tôi (kẻ tấn công). Thực hiện một cuộc tấn công MITM, tôi sẽ chặn email, nhấp vào liên kết và thay đổi mật khẩu vì nó vẫn nhìn thấy địa chỉ IP của tôi. – keyboardP
Có thể, nhưng điều này giả định rằng kẻ tấn công cũng đã xâm phạm tài khoản email. IP sẽ chỉ là một tập con nhỏ của thông tin nhận diện. Có thể có các chỉ số khác được áp dụng sẽ làm tăng độ phức tạp của hàm băm. Chìa khóa sẽ không dựa vào bất kỳ số liệu nào vì mỗi số liệu phải được thỏa hiệp. Càng cần nhiều thì càng khó khăn hơn. Tại một thời điểm nó trở thành một vấn đề của nỗ lực so với kết quả. –