Chcę wysłać wiadomość e-mail z przypomnieniem, aby zalogować się do mojej witryny za pomocą nazwy użytkownika i hasła. Mój skrypt poczty jest gotowy z identyfikatorem logowania, ale nie wiem, jak odszyfrować hasło użytkownika.
Czy ktoś może mi powiedzieć, jak mam uzyskać hasło powiązane z kontem użytkownika?
Nie możesz uzyskać hasła użytkownika z tego, co Drupal zapisuje w bazie danych. Drupal nie szyfruje hasła i zapisuje je w bazie danych, ale zapisuje w bazie danych skrót hasła, który jest wartością zwracaną z funkcji jednokierunkowej; oznacza to, że nie można obliczyć wartości, która powstała w wyniku mieszania.
Z tego powodu zamiast haseł zapisywane są skróty: Jeśli ktoś uzyska dostęp do bazy danych używanej przez witrynę Drupal, nie można odzyskać haseł i uzyskać dostępu do tej witryny jako jeden z użytkowników zarejestrowanych w tej witrynie. (Nadal można znaleźć słowo z tym samym hashem; jak dotąd ataki kolizyjne są pokazane jako możliwe tylko w MD5).
Drupal może wysłać wiadomość e-mail w celu zresetowania hasła użytkownika, co nie jest tym, o co prosisz, ale może być pomocne, jeśli chcesz, aby użytkownicy zresetowali hasło po X miesiącach. W takim przypadku możesz być zainteresowany kodem używanym przez _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);}}
Tak, to normalna praktyka bezpieczeństwa dla wszystkich systemów z wieloma użytkownikami. Drupal używa jednorazowych adresów URL logowania do resetowania hasła. Oznacza to, że użytkownicy nie otrzymują surowych haseł, ale otrzymują specjalny link do logowania i ustawienia nowego. Jednorazowy adres URL logowania można znaleźć w tokenie [user:one-time-login-url].
kalabro
15
Proszę! Nie rób tego!
Wdrożenie systemu logowania w aplikacji internetowej jest łatwe. Wdrożenie bezpiecznego systemu logowania w aplikacji internetowej to zupełnie inna sprawa. Jest wiele aspektów i szczegółów do rozważenia, a Drupal świetnie sobie radzi z prawie wszystkimi tymi aspektami po wyjęciu z pudełka.
Dodanie żądanej funkcji znacznie zmniejszy bezpieczeństwo aplikacji. Jeśli możesz odszyfrować hasła, właśnie usunąłeś z aplikacji bardzo ważny komunikat bezpieczeństwa.
Inne odpowiedzi wyjaśniają obejścia, odpowiedź BetaRide zrobiłaby to, o co prosisz, ale pamiętaj, że całkowicie zgadzam się z jego końcowym stwierdzeniem.
W bardzo ogólny sposób prawdopodobnie rozwiązałbym to mniej więcej w następujący sposób:
W niestandardowym module
Zaimplementuj hook_cron , to zbuduje tablicę zawierającą wszystkie e-maile spełniające wybrane kryteria.
Zapętlaj tablicę i wysyłaj wiadomości e-mail za pośrednictwem drupal_mail. Spójrz na funkcję _user_mail_notify() kiamlaluno powiązaną z powyższym.
Jeśli użytkownik nigdy się nie zalogował, może być konieczne wysłanie e-maila z hasłem resetowania (tutaj nie jestem pewien), prawdopodobnie za pomocą kombinacji drupal_mail i hook_mail_alter w celu dostosowania rejestracji lub adresu e-mail hasła resetowania do własnych upodobań.
Mam nadzieję, że to pomaga, wiem, że jest to trochę szkicowe, ponieważ do tej pory nie wdrożyłem niczego podobnego w moim doświadczeniu z Drupalem, właśnie wypompowywałem kilka pomysłów, w jaki sposób można bezpiecznie powiadamiać użytkowników. Istnieje wiele alternatyw dla hasła w postaci zwykłego tekstu w wiadomości e-mail.
Powodzenia przyjacielu, na zdrowie i szczęśliwego nowego roku!
Pierwsze zdanie tej odpowiedzi należy podkreślić pogrubioną czcionką 16pt i jest to chyba jedno z niewielu miejsc, w których tag blink mógł być odpowiedni.
Wszechobecny
9
Możesz użyć modułu szyfrującego AES , aby uzyskać czytelne hasła.
Są jednak bardzo dobre powody, dla których hasła nie są czytelne w standardowym Drupal. IMHO za pomocą wbudowanych w jeden sposób linków do odzyskiwania pw jest znacznie bezpieczniejsze.
Jest to projekt piaskownicy , który zawiera eksperymentalny kod wyłącznie do użytku programisty.
Ten mały moduł zapewnia token hasła do konta użytkownika do ustawień konta e-mail. Administrator witryny zezwolił na wysłanie hasła do użytkownika w poniższych ustawieniach: -
Witamy (nowy użytkownik utworzony przez administratora)
Witamy (bez zgody)
Aktywacja konta
Witamy (nie wymaga zatwierdzenia, hasło jest ustawione)
[user:one-time-login-url]
.Proszę! Nie rób tego!
Wdrożenie systemu logowania w aplikacji internetowej jest łatwe. Wdrożenie bezpiecznego systemu logowania w aplikacji internetowej to zupełnie inna sprawa. Jest wiele aspektów i szczegółów do rozważenia, a Drupal świetnie sobie radzi z prawie wszystkimi tymi aspektami po wyjęciu z pudełka.
Dodanie żądanej funkcji znacznie zmniejszy bezpieczeństwo aplikacji. Jeśli możesz odszyfrować hasła, właśnie usunąłeś z aplikacji bardzo ważny komunikat bezpieczeństwa.
Inne odpowiedzi wyjaśniają obejścia, odpowiedź BetaRide zrobiłaby to, o co prosisz, ale pamiętaj, że całkowicie zgadzam się z jego końcowym stwierdzeniem.
W bardzo ogólny sposób prawdopodobnie rozwiązałbym to mniej więcej w następujący sposób:
W niestandardowym module
Zaimplementuj hook_cron , to zbuduje tablicę zawierającą wszystkie e-maile spełniające wybrane kryteria.
Zapętlaj tablicę i wysyłaj wiadomości e-mail za pośrednictwem drupal_mail. Spójrz na funkcję
_user_mail_notify()
kiamlaluno powiązaną z powyższym.Jeśli użytkownik nigdy się nie zalogował, może być konieczne wysłanie e-maila z hasłem resetowania (tutaj nie jestem pewien), prawdopodobnie za pomocą kombinacji drupal_mail i hook_mail_alter w celu dostosowania rejestracji lub adresu e-mail hasła resetowania do własnych upodobań.
Mam nadzieję, że to pomaga, wiem, że jest to trochę szkicowe, ponieważ do tej pory nie wdrożyłem niczego podobnego w moim doświadczeniu z Drupalem, właśnie wypompowywałem kilka pomysłów, w jaki sposób można bezpiecznie powiadamiać użytkowników. Istnieje wiele alternatyw dla hasła w postaci zwykłego tekstu w wiadomości e-mail.
Powodzenia przyjacielu, na zdrowie i szczęśliwego nowego roku!
źródło
Możesz użyć modułu szyfrującego AES , aby uzyskać czytelne hasła.
Są jednak bardzo dobre powody, dla których hasła nie są czytelne w standardowym Drupal. IMHO za pomocą wbudowanych w jeden sposób linków do odzyskiwania pw jest znacznie bezpieczniejsze.
źródło
Możesz użyć modułu tokena hasła do konta, aby wysłać hasło pocztą
źródło