2010-03-01 40 views
8

Cách an toàn nhất để xử lý mật khẩu đã quên/đặt lại mật khẩu là gì? Tôi có nên gửi mật khẩu qua email cho người dùng không? Nếu vậy thì bạn buộc họ phải thiết lập lại nó? Hoặc bạn có cho phép họ đặt lại ngay lập tức (không gửi email) và yêu cầu một số thông tin khác để xác minh rằng đó là họ không? Hoặc là có một phương pháp tốt hơn?Cách an toàn để đặt lại mật khẩu hoặc cung cấp mật khẩu cũ

+0

Đã có một cuộc thảo luận lớn về chủ đề này chỉ mới đây: http://stackoverflow.com/questions/2283937/how-should-i-ethically-approach-user-password-storage-for-later-plaintext-retriev –

+0

Nếu hệ thống của bạn có khả năng tra cứu mật khẩu của người dùng và gửi email cho người đó, bạn đã làm điều gì đó rất sai. Bạn sẽ không bao giờ có thể tra cứu mật khẩu của người dùng. Bạn chỉ có thể băm một mật khẩu đến và so sánh, hoặc thay đổi nó và gửi mật khẩu mới. – Scott

Trả lời

14

Bạn không thể gửi mật khẩu qua email cho người dùng vì bạn không biết mật khẩu. Bạn đã "băm" nó bằng applying something like PBKDF2 or bcrypt để lưu trữ, đúng không?

Nếu bạn đặt lại mật khẩu mà không xác nhận mật khẩu với chủ sở hữu tài khoản, kẻ tấn công có thể từ chối quyền truy cập vào tài khoản của anh ấy, ít nhất là cho đến khi anh ấy kiểm tra email của mình bằng cách sử dụng địa chỉ email của nạn nhân để yêu cầu đặt lại.

Một phương pháp đủ an toàn cho nhiều ứng dụng là gửi email liên kết tới chủ sở hữu tài khoản, chứa số lượng lớn, được tạo ngẫu nhiên. Mã thông báo này chỉ nên hợp lệ trong một khoảng thời gian giới hạn. Nếu chủ sở hữu muốn đặt lại mật khẩu của họ, họ nhấp vào liên kết và điều này xác thực họ là chủ sở hữu tài khoản. Sau đó, chủ sở hữu tài khoản có thể chỉ định mật khẩu mới.

0

Tôi cho rằng bạn sẽ làm điều đó theo chương trình? Hay nó là một câu hỏi cho Server Fault?

Một trong những cách là gửi liên kết đến tài khoản email của người dùng. Anh/cô ấy nhấp vào liên kết và được chuyển hướng đến biểu mẫu web bảo mật của bạn nơi họ đặt lại mật khẩu.

KHÔNG gửi email mật khẩu cho người dùng

5

Bạn không nên gửi mật khẩu qua email. Dưới đây là quy trình từng bước tôi đã sử dụng:

  1. Cung cấp cho người dùng tùy chọn đặt lại mật khẩu.
  2. Tùy chọn này lưu mã thông báo duy nhất cho người dùng. Thẻ cuối cùng hết hạn (giờ, ngày hoặc ngày).
  3. Một liên kết được gửi qua email đến người dùng bao gồm mã thông báo.
  4. Người dùng nhấp vào liên kết được gửi qua email.
  5. Nếu mã thông báo tồn tại và không hết hạn, liên kết sẽ tải biểu mẫu mật khẩu mới. Nếu không, không tải biểu mẫu mật khẩu mới.
  6. Khi người dùng đặt mật khẩu mới, hãy xóa mã thông báo và gửi cho người dùng email xác nhận.

Cho đến khi mật khẩu mới được đặt, mật khẩu cũ sẽ vẫn hoạt động. Đừng quên băm và muối mật khẩu!

Các vấn đề liên quan