Kullanıcının şifresini postayla gönder


20

Kullanıcılara web sitemde kullanıcı adı ve şifresi ile giriş yapmaları için hatırlatma e-postası göndermek istiyorum. Posta betiğim giriş kimliğiyle hazır, ancak kullanıcının şifresinin şifresini nasıl çözeceğimizi bilmiyorum.

Bir kullanıcı bana bir kullanıcı hesabıyla ilişkili şifreyi nasıl almam gerektiğini söyleyebilir mi?

Yanıtlar:


31

Kullanıcının şifresini Drupal'ın veritabanına kaydettiklerinden elde edemezsiniz. Drupal şifreyi şifrelemez ve veritabanına kaydeder, ancak veritabanına tek yönlü bir işlevden döndürülen değer olan parolanın karmasını kaydeder; bu, karmayı oluşturan değerin hesaplanmasının mümkün olmadığı anlamına gelir.
Parolalar yerine karmaların kaydedilmesinin nedeni budur: Birisi bir Drupal sitesi tarafından kullanılan veritabanına erişirse, şifreleri almak ve o siteye kayıtlı sitede bulunan kullanıcılardan biri olarak erişmek mümkün değildir. (Aynı hash ile bir kelime bulmak hala mümkün olabilir; Şimdiye kadar, çarpışma saldırıları sadece MD5 ile kısa sürede mümkün.

Drupal, bir kullanıcının şifresini sıfırlamak için bir e-posta gönderebilir, bu sizin istediğiniz şey değildir, ancak kullanıcıların X ay sonra şifrelerini sıfırlamasını istiyorsanız yararlı olabilir. Bu durumda, _user_mail_notify () tarafından kullanılan kodla ilgilenebilirsiniz .

  // 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
Evet, tüm çok kullanıcılı sistemler için normal bir güvenlik uygulamasıdır. Drupal şifre sıfırlamak için tek seferlik giriş URL'lerini kullanır. Bu, kullanıcıların ham şifrelerini almadıkları, ancak giriş yapmak ve yeni bir şifre ayarlamak için özel bir bağlantı elde ettikleri anlamına gelir. Bir kez giriş URL'si jetonda bulunabilir [user:one-time-login-url].
kalabro

15

Lütfen! Yapma bunu!

Bir web uygulamasında bir oturum açma sistemi uygulamak kolaydır. Bir uygulanması güvenli bir web uygulaması üzerinde giriş sistemini tamamen farklı bir konudur. Dikkate alınması gereken birçok yön ve detay var ve Drupal kutudan çıkan tüm bu yönlerle uğraşmak için iyi bir iş çıkarıyor .

İstediğiniz özelliği eklemek, uygulamanızın güvenliğini büyük ölçüde azaltır. Şifrelerin şifresini çözebilirseniz, uygulamanızı çok önemli bir güvenlik önleminden çıkardınız.

Diğer cevaplar geçici çözümleri açıklıyor, BetaRide'ın cevabı istediğini yapacaktı, ancak kapanış ifadesine tamamen katılıyorum.

Çok genel bir şekilde, muhtemelen bunu aşağı yukarı aşağıdaki şekilde ele alacağım:

Özel bir modülde

  1. Uygulamak hook_cron , bu olacağını sizin seçtiğiniz ölçütlere uyan tüm e-postaları içeren bir dizi oluşturur.

  2. Dizi boyunca döngü yapın ve e-postaları drupal_mail ile gönderin. _user_mail_notify() Yukarıya bağlı kiamlaluno fonksiyonuna bakın.

Kullanıcı hiç giriş yapmadıysa , muhtemelen kayıt veya sıfırlama şifresi e-postasını zevkinize göre özelleştirmek için bir drupal_mail ve hook_mail_alter kombinasyonu kullanarak bir sıfırlama şifre postası (burada emin değilim) göndermeniz gerekebilir .

Umarım yardımcı olurum, şimdiye kadar Drupal deneyimime benzer bir şey uygulamadığım için biraz kabataslak olduğunu biliyorum, sadece kullanıcıları güvenli bir şekilde nasıl bilgilendirebileceğine dair birkaç fikir pompaladım. E-postada düz metin bir parolaya sahip olmanın birçok alternatifi vardır.

İyi şanslar arkadaşım, sana alkışlar ve mutlu yıllar!


2
Bu cevabın ilk cümlesinin 16 punto kalın yazı tipiyle vurgulanması gerekir ve belki de göz kırpma etiketinin uygun olabileceği birkaç yerden biridir.
şeye kadir

9

Okunabilir parolaları almak için AES şifreleme modülünü kullanabilirsiniz.

Ancak standart Drupal'da şifrelerin okunamamasının çok iyi nedenleri vardır. IMHO yerleşik bir şekilde pw-kurtarma bağlantıları kullanarak çok daha güvenlidir.


0

Postada parola göndermek için Hesap Parolası Belirteç Modülünü kullanabilirsiniz

Deneysel Proje

Bu, yalnızca geliştirici kullanımı için deneysel kod içeren bir korumalı alan projesidir .

Bu küçük modül, hesap E-posta ayarları için kullanıcı hesabı parola jetonu sağlar. Site yöneticisi, aşağıdaki ayarlarda şifreyi kullanıcıya göndermeye izin verdi: -

  1. Hoş geldiniz (yönetici tarafından oluşturulan yeni kullanıcı)
  2. Hoş geldiniz (onay gerekmez)
  3. Hesap Aktivasyonu
  4. Hoş geldiniz (onay gerekmez, şifre ayarlanmıştır)
  5. Şifre kurtarma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.