web-dev-qa-db-fra.com

Envoyer le mot de passe de l'utilisateur par courrier

Je souhaite envoyer un e-mail de rappel aux utilisateurs pour se connecter à mon site Web avec leur nom d'utilisateur et leur mot de passe. Mon script de messagerie est prêt avec l'ID de connexion, mais je ne sais pas comment décrypter le mot de passe de l'utilisateur.

Quelqu'un peut-il me dire comment obtenir le mot de passe associé à un compte d'utilisateur?

20
Hacker

Vous ne pouvez pas obtenir le mot de passe de l'utilisateur à partir de ce que Drupal enregistre dans la base de données. Drupal ne crypte pas le mot de passe et l'enregistre dans la base de données, mais il l'enregistre dans base de données le hachage du mot de passe, qui est la valeur renvoyée par une fonction unidirectionnelle; cela signifie qu'il n'est pas possible de calculer la valeur à l'origine du hachage.
C'est la raison pour laquelle les hachages sont enregistrés à la place des mots de passe: Si quelqu'un accède à la base de données utilisée par un site Drupal, il n'est pas possible de récupérer les mots de passe et d'y accéder. comme l'un des utilisateurs enregistrés sur ce site. (Il pourrait toujours être possible de trouver un mot avec exactement le même hachage; jusqu'à présent, les attaques par collision sont montrées possibles en peu de temps uniquement avec MD5.)

Drupal peut envoyer un e-mail pour réinitialiser le mot de passe d'un utilisateur, ce qui n'est pas ce que vous demandez, mais il pourrait être utile si vous souhaitez que les utilisateurs réinitialisent leur mot de passe après X mois. Dans ce cas, vous pourriez être intéressé par le code utilisé par _ 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);
    }
  }
30
kiamlaluno

S'il vous plaît! Ne fais pas ça!

La mise en œuvre d'un système de connexion sur une application Web est facile. La mise en œuvre d'un sécurisé système de connexion sur une application Web est une tout autre affaire. Il y a de nombreux aspects et détails à considérer, et Drupal fait un excellent travail avec à peu près tout de ces aspects hors de la boîte.

L'ajout de la fonctionnalité demandée réduirait considérablement la sécurité de votre application. Si vous pouvez décrypter les mots de passe, vous venez de supprimer votre application d'une mesure de sécurité très importante.

D'autres réponses expliquent les solutions de contournement, la réponse de BetaRide ferait ce que vous demandez, mais sachez que je suis totalement d'accord avec sa déclaration finale.

D'une manière très générale, j'aborderais probablement cela plus ou moins de la manière suivante:

Dans un module personnalisé

  1. Implémentez hook_cron , cela créerait un tableau contenant tous les e-mails qui correspondent aux critères de votre choix.

  2. Parcourez le tableau et envoyez les e-mails via drupal_mail. Regardez dans la fonction _user_mail_notify() kiamlaluno liée à ci-dessus.

Si l'utilisateur a jamais connecté, vous mai devez envoyer une réinitialisation mail de mot de passe (pas sûr ici), en utilisant éventuellement une combinaison de drupal_mail et hook_mail_alter pour personnaliser soit l'enregistrement, soit l'email de réinitialisation du mot de passe à votre goût.

J'espère que cela aide, je sais que c'est un peu sommaire car je n'ai pas mis en œuvre quelque chose de similaire dans mon Drupal expérience jusqu'à présent, je pompais juste quelques idées sur la façon dont on pourrait informer les utilisateurs dans un Il existe de nombreuses alternatives à l'utilisation d'un mot de passe en texte brut dans l'e-mail.

Bonne chance ami, bravo à toi et bonne année!

15
stefgosselin

Vous pouvez utiliser le module cryptage AES pour obtenir des mots de passe lisibles.

Cependant, il existe de très bonnes raisons pour lesquelles les mots de passe ne sont pas lisibles dans Drupal standard. À mon humble avis, l'utilisation des liens pw-recovery intégrés à sens unique est beaucoup plus sûre.

8
BetaRide

Vous pouvez utiliser Token de mot de passe de compte Module pour envoyer le mot de passe par courrier

Projet expérimental

Il s'agit d'un projet sandbox , qui contient du code expérimental à l'usage exclusif des développeurs.

Ce petit module fournit un jeton de mot de passe de compte utilisateur pour les paramètres des e-mails du compte. L'administrateur du site a autorisé l'envoi du mot de passe à l'utilisateur dans les paramètres ci-dessous: -

  1. Bienvenue (nouvel utilisateur créé par l'administrateur)
  2. Bienvenue (aucune approbation requise)
  3. Activation de compte
  4. Bienvenue (aucune approbation requise, mot de passe défini)
  5. Récupération de mot de passe
0
Soliyappan