Gửi mật khẩu người dùng trong thư


20

Tôi muốn gửi email nhắc nhở cho người dùng để đăng nhập vào trang web của tôi với tên người dùng và mật khẩu của họ. Kịch bản thư của tôi đã sẵn sàng với ID đăng nhập, nhưng tôi không biết cách giải mã mật khẩu của người dùng.

Bất cứ ai có thể cho tôi biết làm thế nào tôi có được mật khẩu được liên kết với một tài khoản người dùng?

Câu trả lời:


31

Bạn không thể lấy mật khẩu của người dùng từ những gì Drupal lưu trong cơ sở dữ liệu. Drupal không mã hóa mật khẩu và lưu nó trong cơ sở dữ liệu, nhưng nó lưu trong cơ sở dữ liệu hàm băm của mật khẩu, là giá trị được trả về từ hàm một chiều; điều này có nghĩa là không thể tính giá trị có nguồn gốc băm.
Đó là lý do tại sao băm được lưu thay vì mật khẩu: Nếu ai đó truy cập cơ sở dữ liệu được sử dụng bởi một trang web Drupal, không thể truy xuất mật khẩu và truy cập trang web đó như một trong những người dùng đã đăng ký trong trang web đó. (Vẫn có thể tìm thấy một từ có cùng hàm băm; cho đến nay, các cuộc tấn công va chạm được hiển thị trong thời gian ngắn chỉ với MD5.)

Drupal có thể gửi email để đặt lại mật khẩu của người dùng, đây không phải là điều bạn đang yêu cầu, nhưng nó có thể hữu ích nếu bạn muốn người dùng đặt lại mật khẩu của họ sau X tháng. Trong trường hợp này, bạn có thể quan tâm đến mã được sử dụng bởi _user_mail_notify () .

  // By default, we always notify except for canceled and blocked.
  $default_notify = ($op != 'status_canceled' && $op != 'status_blocked');
  $notify = variable_get('user_mail_' . $op . '_notify', $default_notify);
  if ($notify) {
    $params['account'] = $account;
    $language = $language ? $language : user_preferred_language($account);
    $mail = drupal_mail('user', $op, $account->mail, $language, $params);
    if ($op == 'register_pending_approval') {
      // If a user registered requiring admin approval, notify the admin, too.
      // We use the site default language for this.
      drupal_mail('user', 'register_pending_approval_admin', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
    }
  }

4
Có, đó là thông lệ bảo mật thông thường cho tất cả các hệ thống nhiều người dùng. Drupal sử dụng các url đăng nhập một lần để đặt lại mật khẩu. Điều đó có nghĩa là người dùng không nhận được mật khẩu thô, nhưng có được liên kết đặc biệt để đăng nhập và đặt mật khẩu mới. Url đăng nhập một lần có thể được tìm thấy trong mã thông báo [user:one-time-login-url].
kalabro

15

Xin vui lòng! Đừng làm vậy!

Việc thực hiện một hệ thống đăng nhập trên một ứng dụng web rất dễ dàng. Việc thực hiện một hệ thống đăng nhập an toàn trên một ứng dụng web là một vấn đề hoàn toàn khác. Có nhiều khía cạnh và chi tiết để xem xét, và Drupal thực hiện tốt công việc xử lý tất cả các khía cạnh đó ra khỏi hộp.

Thêm tính năng bạn yêu cầu sẽ làm giảm đáng kể tính bảo mật của ứng dụng của bạn. Nếu bạn có thể giải mã mật khẩu, bạn vừa loại bỏ ứng dụng của mình về một vấn đề bảo mật rất quan trọng.

Các câu trả lời khác giải thích cách giải quyết, câu trả lời của BetaRide sẽ làm những gì bạn yêu cầu, nhưng lưu ý rằng tôi hoàn toàn đồng ý với tuyên bố kết thúc của anh ấy.

Nói một cách rất chung chung, có lẽ tôi sẽ giải quyết vấn đề này theo cách ít nhiều như sau:

Trong một mô-đun tùy chỉnh

  1. Triển khai hook_cron , điều này sẽ xây dựng một mảng chứa tất cả các email phù hợp với tiêu chí bạn chọn.

  2. Lặp lại qua mảng và gửi email qua drupal_mail. Hãy nhìn vào chức năng _user_mail_notify() kiamlaluno liên kết đến ở trên.

Nếu người dùng chưa bao giờ đăng nhập, bạn có thể cần gửi thư đặt lại mật khẩu (không chắc chắn ở đây), có thể sử dụng kết hợp drupal_mailhook_mail_alter để tùy chỉnh đăng ký hoặc email mật khẩu đặt lại theo sở thích của bạn.

Hy vọng điều đó có ích, tôi biết nó hơi sơ sài vì tôi chưa thực hiện bất cứ điều gì tương tự trong trải nghiệm Drupal của mình, tôi chỉ đưa ra một vài ý tưởng về cách người ta có thể thông báo cho người dùng một cách an toàn. Có nhiều lựa chọn thay thế để có một mật khẩu văn bản đơn giản trong email.

Chúc bạn may mắn, chúc mừng năm mới & chúc mừng năm mới!


2
Câu đầu tiên của câu trả lời này cần được nhấn mạnh ở kiểu in đậm 16pt và có lẽ là một trong số ít vị trí mà thẻ nhấp nháy có thể phù hợp.
Omnifarious

9

Bạn có thể sử dụng mô-đun mã hóa AES để lấy mật khẩu có thể đọc được.

Tuy nhiên, có những lý do rất chính đáng tại sao mật khẩu không thể đọc được trong Drupal tiêu chuẩn. IMHO sử dụng các liên kết pw-recovery được xây dựng theo một cách an toàn hơn nhiều.


0

Bạn có thể sử dụng Mô-đun mã thông báo mật khẩu tài khoản để gửi mật khẩu qua thư

Dự án thí nghiệm

Đây là một dự án hộp cát , chứa mã thử nghiệm chỉ dành cho nhà phát triển.

Mô-đun nhỏ này cung cấp mã thông báo mật khẩu tài khoản người dùng cho cài đặt Email của tài khoản. Quản trị viên trang web cho phép gửi mật khẩu cho người dùng trong cài đặt dưới đây: -

  1. Chào mừng (người dùng mới được tạo bởi quản trị viên)
  2. Chào mừng (không cần phê duyệt)
  3. Kích hoạt tài khoản
  4. Chào mừng (không cần phê duyệt, mật khẩu được đặt)
  5. Khôi phục mật khẩu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.