Invia la password dell'utente per posta


20

Voglio inviare un'email di promemoria agli utenti per accedere al mio sito Web con il loro nome utente e password. Il mio script di posta elettronica è pronto con l'ID di accesso, ma non so come decrittografare la password dell'utente.

Qualcuno può dirmi come devo ottenere la password associata a un account utente?

Risposte:


31

Non è possibile ottenere la password dell'utente da ciò che Drupal salva nel database. Drupal non crittografa la password e la salva nel database, ma salva nel database l'hash della password, che è il valore restituito da una funzione unidirezionale; ciò significa che non è possibile calcolare il valore che ha originato l'hash.
Questo è il motivo per cui gli hash vengono salvati al posto delle password: se qualcuno accede al database utilizzato da un sito Drupal, non è possibile recuperare le password e accedere a quel sito come uno degli utenti registrati in quel sito. (Potrebbe ancora essere possibile trovare una parola con lo stesso hash esatto; finora, gli attacchi di collisione sono mostrati possibili in breve tempo solo con MD5.)

Drupal è in grado di inviare un'e-mail per reimpostare la password di un utente, che non è ciò che stai chiedendo, ma potrebbe essere utile se desideri che gli utenti reimpostino la password dopo X mesi. In questo caso, potresti essere interessato al codice utilizzato da _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
Sì, è normale pratica di sicurezza per tutti i sistemi multiutente. Drupal utilizza gli URL di accesso una tantum per reimpostare la password. Significa che gli utenti non ottengono le loro password non elaborate, ma ottengono un collegamento speciale per accedere e impostarne una nuova. L'URL di accesso singolo può essere trovato nel token [user:one-time-login-url].
Kalabro,

15

Per favore! Non farlo!

L'implementazione di un sistema di accesso su un'applicazione Web è semplice. L'implementazione di un sistema di accesso sicuro su un'applicazione Web è una questione totalmente diversa. Ci sono molti aspetti e dettagli da considerare e Drupal fa un ottimo lavoro nel trattare praticamente tutti quegli aspetti immediatamente .

L'aggiunta della funzione richiesta ridurrebbe notevolmente la sicurezza dell'applicazione. Se riesci a decrittografare le password, hai appena rimosso l'app da un messaggio di sicurezza molto importante.

Altre risposte spiegano soluzioni alternative, la risposta di BetaRide farebbe ciò che chiedi, ma sappi che sono totalmente d'accordo con la sua dichiarazione di chiusura.

In un modo molto generale, probabilmente lo affronterò più o meno nel modo seguente:

In un modulo personalizzato

  1. Implementa hook_cron , questo creerebbe un array contenente tutte le e-mail che soddisfano i criteri di tua scelta.

  2. Passa attraverso l'array e invia le e-mail tramite drupal_mail. Guarda nella funzione _user_mail_notify() kiamlaluno collegata in alto.

Se l'utente non ha mai effettuato l'accesso, potrebbe essere necessario inviare una mail di reimpostazione della password (non sicuro qui), possibilmente utilizzando una combinazione di drupal_mail e hook_mail_alter per personalizzare la registrazione o l'e-mail di reimpostazione della password secondo i propri gusti.

Spero che sia d'aiuto, so che è un po 'impreciso in quanto non ho implementato nulla di simile nella mia esperienza Drupal finora, stavo solo dando alcune idee su come si potesse notificare gli utenti in modo sicuro. Ci sono molte alternative ad avere una password in chiaro nell'email.

Buona fortuna amico, saluti e buon anno!


2
La prima frase di questa risposta deve essere enfatizzata in grassetto 16pt, ed è forse uno dei pochi punti in cui il tag lampeggiante potrebbe essere stato appropriato.
Onnipotente il

9

È possibile utilizzare il modulo di crittografia AES per ottenere password leggibili.

Tuttavia ci sono ottime ragioni per cui le password non sono leggibili in Drupal standard. IMHO che utilizza i collegamenti pw-recovery integrati in un modo è molto più sicuro.


0

È possibile utilizzare il modulo token password account per inviare la password per posta

Progetto sperimentale

Questo è un progetto sandbox , che contiene codice sperimentale solo per gli sviluppatori.

Questo piccolo modulo fornisce il token password dell'account utente per le impostazioni e-mail dell'account. L'amministratore del sito ha autorizzato l'invio della password all'utente con le seguenti impostazioni: -

  1. Benvenuto (nuovo utente creato dall'amministratore)
  2. Benvenuto (nessuna approvazione richiesta)
  3. Attivazione dell'account
  4. Benvenuto (nessuna approvazione richiesta, password impostata)
  5. Recupero della password
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.