Enviar a senha do usuário no correio

20

Desejo enviar um e-mail de lembrete aos usuários para fazer login no meu site com seu nome de usuário e senha. Meu script de correio está pronto com o ID de login, mas não sei como descriptografar a senha do usuário.

Alguém pode me dizer como devo obter a senha associada a uma conta de usuário?

Hacker
fonte

Respostas:

31

Você não pode obter a senha do usuário daquilo que o Drupal salva no banco de dados. O Drupal não criptografa a senha e a salva no banco de dados, mas salva no banco de dados o hash da senha, que é o valor retornado de uma função unidirecional; isso significa que não é possível calcular o valor que originou o hash.
Essa é a razão pela qual os hashes são salvos em vez das senhas: se alguém acessar o banco de dados usado por um site Drupal, não será possível recuperar as senhas e acessá-lo como um dos usuários registrados nesse site. (Ainda é possível encontrar uma palavra com exatamente o mesmo hash; até agora, os ataques de colisão são mostrados possíveis em pouco tempo apenas com o MD5.)

O Drupal pode enviar um email para redefinir a senha de um usuário, o que não é o que você está solicitando, mas pode ser útil se você desejar que os usuários redefinam sua senha após X meses. Nesse caso, você pode estar interessado no código usado por _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);
    }
  }
kiamlaluno
fonte
4
Sim, é prática de segurança normal para todos os sistemas multiusuários. O Drupal usa URLs de login únicos para redefinir a senha. Isso significa que os usuários não obtêm suas senhas brutas, mas obtêm um link especial para fazer login e definir uma nova. Um URL de login único pode ser encontrado no token [user:one-time-login-url].
kalabro
15

Por favor! Não faça isso!

É fácil implementar um sistema de login em um aplicativo da web. A implementação de um sistema de login seguro em um aplicativo Web é uma questão totalmente diferente. Há muitos aspectos e detalhes a serem considerados, e o Drupal faz um bom trabalho ao lidar com praticamente todos esses aspectos imediatamente .

Adicionar o recurso que você solicita reduziria bastante a segurança do seu aplicativo. Se você pode descriptografar as senhas, acaba de retirar seu aplicativo de uma medida de segurança muito importante.

Outras respostas explicam as soluções alternativas, a resposta da BetaRide faria o que você pede, mas esteja ciente de que concordo totalmente com a declaração de encerramento.

De uma maneira muito geral, eu provavelmente abordaria isso mais ou menos da seguinte maneira:

Em um módulo personalizado

  1. Implemente hook_cron , isso criará uma matriz contendo todos os emails que correspondem aos critérios de sua escolha.

  2. Faça um loop na matriz e envie os e-mails via drupal_mail. _user_mail_notify() Observe a função kiamlaluno vinculada acima.

Se o usuário nunca fez login, talvez seja necessário enviar um e-mail de redefinição de senha (não tenho certeza aqui), possivelmente usando uma combinação de drupal_mail e hook_mail_alter para personalizar o e-mail de registro ou redefinir a senha ao seu gosto.

Espero que ajude, eu sei que é um pouco superficial, pois até agora não implementei nada semelhante na minha experiência com o Drupal, eu estava apenas lançando algumas idéias sobre como alguém poderia notificar os usuários de maneira segura. Existem muitas alternativas para ter uma senha de texto sem formatação no email.

Amigo de boa sorte, felicidades para você e feliz ano novo!

stefgosselin
fonte
2
A primeira frase desta resposta precisa ser enfatizada em negrito de 16 pontos e talvez seja um dos poucos lugares em que a tag piscada pode ter sido apropriada.
omniforme
9

Você pode usar o módulo de criptografia AES para obter senhas legíveis.

No entanto, existem boas razões pelas quais as senhas não são legíveis no Drupal padrão. IMHO usando os links de recuperação de pw construídos de uma maneira é muito mais seguro.

BetaRide
fonte
0

Você pode usar o Módulo de token de senha da conta para enviar a senha no correio

Projeto Experimental

Este é um projeto de sandbox , que contém código experimental apenas para uso do desenvolvedor.

Este pequeno módulo fornece um token de senha da conta de usuário para as configurações de E-mails da conta. O administrador do site permitiu o envio da senha ao usuário nas seguintes configurações: -

  1. Bem-vindo (novo usuário criado pelo administrador)
  2. Bem-vindo (não é necessária aprovação)
  3. Ativação de conta
  4. Bem-vindo (não é necessária aprovação, a senha está definida)
  5. Recuperação de senha
Soliyappan
fonte