it-swarm.com.de

Senden Sie das Passwort des Benutzers per E-Mail

Ich möchte den Benutzern eine Erinnerungs-E-Mail senden, um mich mit ihrem Benutzernamen und Passwort auf meiner Website anzumelden. Mein Mail-Skript ist mit der Login-ID fertig, aber ich weiß nicht, wie ich das Passwort des Benutzers entschlüsseln soll.

Kann mir jemand sagen, wie ich das Passwort für ein Benutzerkonto erhalten soll?

20
Hacker

Sie können das Kennwort des Benutzers nicht von dem abrufen, was Drupal in der Datenbank speichert. Drupal verschlüsselt das Kennwort nicht und speichert es in der Datenbank, aber es speichert in Datenbank Der Hash des Kennworts. Dies ist der Wert, der von einer Einwegfunktion zurückgegeben wird. Dies bedeutet, dass der Wert, aus dem der Hash stammt, nicht berechnet werden kann.
Dies ist der Grund, warum Hashes anstelle der Kennwörter gespeichert werden: Wenn jemand auf die Datenbank zugreift, die von einer Drupal - Site verwendet wird, ist es nicht möglich, die Kennwörter abzurufen und darauf zuzugreifen Site als einer der auf dieser Site registrierten Benutzer. (Es könnte immer noch möglich sein, ein Wort mit genau demselben Hash zu finden. Bisher werden Kollisionsangriffe nur mit MD5 in kurzer Zeit als möglich angezeigt.)

Drupal kann eine E-Mail senden, um das Kennwort eines Benutzers zurückzusetzen. Dies ist nicht das, wonach Sie fragen. Es kann jedoch hilfreich sein, wenn die Benutzer ihr Kennwort nach X Monaten zurücksetzen sollen. In diesem Fall könnte Sie der von _ user_mail_notify () verwendete Code interessieren.

  // 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);
    }
  }
30
kiamlaluno

Bitte! Tu das nicht!

Die Implementierung eines Anmeldesystems in einer Webanwendung ist einfach. Die Implementierung eines sicheren Anmeldesystems in einer Webanwendung ist eine ganz andere Sache. Es gibt viele Aspekte und Details zu berücksichtigen, und Drupal macht einen guten Job im Umgang mit fast allen dieser Aspekte sofort einsatzbereit.

Das Hinzufügen der gewünschten Funktion würde die Sicherheit Ihrer Anwendung erheblich beeinträchtigen. Wenn Sie die Passwörter entschlüsseln können, haben Sie Ihrer App gerade eine sehr wichtige Sicherheitsmaßnahme entzogen.

Andere Antworten erklären Problemumgehungen. Die Antwort von BetaRide würde genau das tun, was Sie verlangen. Beachten Sie jedoch, dass ich seiner Schlusserklärung voll und ganz zustimme.

Ganz allgemein würde ich dies wahrscheinlich mehr oder weniger folgendermaßen angehen:

In einem benutzerdefinierten Modul

  1. Implementieren Sie hook_cron , dies würde ein Array erstellen, das alle E-Mails enthält, die den Kriterien Ihrer Wahl entsprechen.

  2. Durchlaufen Sie das Array und senden Sie die E-Mails über drupal_mail. Schauen Sie sich die oben verknüpfte Funktion _user_mail_notify() kiamlaluno an.

Wenn der Benutzer nie angemeldet hat, müssen Sie möglicherweise einen Reset senden Passwort-Mail (hier nicht sicher), möglicherweise mit einer Kombination aus drupal_mail und hook_mail_alter , um entweder die Registrierung oder die zurückgesetzte Passwort-E-Mail nach Ihrem Geschmack anzupassen.

Hoffe das hilft, ich weiß, dass es ein bisschen lückenhaft ist, da ich in meiner Drupal Erfahrung bisher nichts Ähnliches implementiert habe, ich habe nur ein paar Ideen herausgepumpt, wie man Benutzer in einem benachrichtigen kann Es gibt viele Alternativen zu einem Klartext-Passwort in der E-Mail.

Viel Glück Freund, Prost und frohes neues Jahr!

15
stefgosselin

Sie können das Modul AES-Verschlüsselung verwenden, um lesbare Kennwörter zu erhalten.

Es gibt jedoch sehr gute Gründe, warum Passwörter in Standard-Drupal nicht lesbar sind. IMHO ist die Verwendung der eingebauten Einweg-Pw-Recovery-Links viel sicherer.

8
BetaRide

Sie können das Modul Account Password Token verwenden, um ein Passwort per E-Mail zu senden

Experimentelles Projekt

Dies ist ein Sandbox-Projekt , das experimentellen Code nur für Entwickler enthält.

Dieses kleine Modul bietet ein Kennwort-Token für das Benutzerkonto für die Einstellungen für Konto-E-Mails. Der Site-Administrator hat das Senden des Kennworts an den Benutzer in den folgenden Einstellungen gestattet: -

  1. Willkommen (neuer Benutzer vom Administrator erstellt)
  2. Willkommen (keine Genehmigung erforderlich)
  3. Account Aktivierung
  4. Willkommen (keine Genehmigung erforderlich, Passwort ist festgelegt)
  5. Passwort-Wiederherstellung
0
Soliyappan