ฉันต้องการส่งอีเมลเตือนความจำถึงผู้ใช้เพื่อเข้าสู่เว็บไซต์ของฉันด้วยชื่อผู้ใช้และรหัสผ่าน สคริปต์เมลของฉันพร้อมใช้รหัสล็อกอิน แต่ฉันไม่ทราบวิธีถอดรหัสรหัสผ่านของผู้ใช้
ใครสามารถบอกฉันว่าฉันควรได้รับรหัสผ่านที่เชื่อมโยงกับบัญชีผู้ใช้หรือไม่
ฉันต้องการส่งอีเมลเตือนความจำถึงผู้ใช้เพื่อเข้าสู่เว็บไซต์ของฉันด้วยชื่อผู้ใช้และรหัสผ่าน สคริปต์เมลของฉันพร้อมใช้รหัสล็อกอิน แต่ฉันไม่ทราบวิธีถอดรหัสรหัสผ่านของผู้ใช้
ใครสามารถบอกฉันว่าฉันควรได้รับรหัสผ่านที่เชื่อมโยงกับบัญชีผู้ใช้หรือไม่
คำตอบ:
คุณไม่สามารถรับรหัสผ่านของผู้ใช้จากสิ่งที่ Drupal บันทึกในฐานข้อมูล Drupal ไม่เข้ารหัสรหัสผ่านและบันทึกไว้ในฐานข้อมูล แต่จะบันทึกการแฮชของรหัสผ่านในฐานข้อมูลซึ่งเป็นค่าที่ส่งคืนจากฟังก์ชันทางเดียว นี่หมายความว่าเป็นไปไม่ได้ที่จะคำนวณค่าที่ทำให้เกิดแฮช
นี่คือเหตุผลที่ทำให้แฮชถูกบันทึกแทนรหัสผ่าน: ถ้ามีคนเข้าถึงฐานข้อมูลที่ใช้โดยไซต์ Drupal จะไม่สามารถเรียกคืนรหัสผ่านและเข้าถึงไซต์นั้นในฐานะหนึ่งในผู้ใช้ที่ลงทะเบียนในไซต์นั้น (อาจเป็นไปได้ที่จะหาคำที่มีแฮชเดียวกันที่แน่นอนดังนั้นการโจมตีการชนกันจะสามารถทำได้ในระยะเวลาอันสั้นกับ MD5 เท่านั้น)
Drupal สามารถส่งอีเมลเพื่อรีเซ็ตรหัสผ่านของผู้ใช้ซึ่งไม่ใช่สิ่งที่คุณต้องการ แต่อาจเป็นประโยชน์หากคุณต้องการให้ผู้ใช้รีเซ็ตรหัสผ่านหลังจาก X เดือน ในกรณีนี้คุณอาจจะสนใจที่จะรหัสที่ใช้โดย_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);
}
}
โปรด! อย่าทำอย่างนั้น!
การใช้ระบบเข้าสู่ระบบบนเว็บแอปพลิเคชันนั้นเป็นเรื่องง่าย การใช้ระบบเข้าสู่ระบบที่ปลอดภัยในเว็บแอปพลิเคชันเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง มีหลายแง่มุมและรายละเอียดที่ต้องพิจารณาและ Drupal ทำงานได้ดีในการจัดการกับแง่มุมทั้งหมดที่อยู่นอกกรอบ
การเพิ่มคุณสมบัติที่คุณขอจะลดความปลอดภัยของแอปพลิเคชันของคุณลงอย่างมาก หากคุณสามารถถอดรหัสรหัสผ่านได้คุณได้ถอดแอปของคุณเพื่อความปลอดภัยที่สำคัญมาก
คำตอบอื่น ๆ อธิบายถึงวิธีแก้ปัญหาคำตอบของ BetaRide จะทำในสิ่งที่คุณถาม แต่ระวังให้ดี
โดยทั่วไปแล้วฉันอาจใช้วิธีต่อไปนี้มากกว่าหรือน้อยกว่า:
ในโมดูลที่กำหนดเอง
ใช้hook_cronสิ่งนี้จะสร้างอาร์เรย์ที่มีอีเมลทั้งหมดที่ตรงกับเกณฑ์ที่คุณเลือก
วนรอบอาร์เรย์และส่งอีเมลผ่าน drupal_mail อย่ามองเข้าไปในฟังก์ชั่น_user_mail_notify()
kiamlaluno ที่เชื่อมโยงกับด้านบน
หากผู้ใช้ไม่เคยเข้าสู่ระบบคุณอาจต้องส่งอีเมลรหัสผ่านรีเซ็ต (ไม่แน่ใจที่นี่) อาจใช้drupal_mailและhook_mail_alterรวมกันเพื่อปรับแต่งการลงทะเบียนหรือรีเซ็ตรหัสผ่านอีเมลตามที่คุณต้องการ
หวังว่าจะช่วยได้ฉันรู้ว่ามันร่างเล็กน้อยเพราะฉันไม่ได้นำสิ่งใดที่คล้ายกันมาใช้ในประสบการณ์ Drupal ของฉันฉันเพิ่งปั๊มความคิดเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีที่ผู้ใช้สามารถแจ้งเตือนผู้ใช้ได้อย่างปลอดภัย มีทางเลือกมากมายในการใช้รหัสผ่านแบบข้อความล้วนในอีเมล
โชคดีเพื่อน, เชียร์กับคุณและสวัสดีปีใหม่!
คุณสามารถใช้โมดูลการเข้ารหัส AESเพื่อรับรหัสผ่านที่อ่านได้
อย่างไรก็ตามมีเหตุผลที่ดีว่าทำไมรหัสผ่านจึงไม่สามารถอ่านได้ใน Drupal มาตรฐาน IMHO ที่ใช้ลิงก์การกู้คืน pw ในตัวเดียวมีความปลอดภัยมากกว่า
คุณสามารถใช้โมดูลรหัสผ่านของบัญชีเพื่อส่งรหัสผ่านทางไปรษณีย์
โครงการทดลอง
นี่เป็นโครงการแซนด์บ็อกซ์ซึ่งมีรหัสทดลองสำหรับนักพัฒนาซอฟต์แวร์เท่านั้น
โมดูลขนาดเล็กนี้ให้โทเค็นรหัสผ่านบัญชีผู้ใช้สำหรับการตั้งค่าอีเมลของบัญชี ผู้ดูแลไซต์อนุญาตให้ส่งรหัสผ่านไปยังผู้ใช้ในการตั้งค่าการร้อง: -
- ยินดีต้อนรับ (ผู้ใช้ใหม่ที่สร้างโดยผู้ดูแลระบบ)
- ยินดีต้อนรับ (ไม่ต้องการการอนุมัติ)
- การเปิดใช้งานบัญชี
- ยินดีต้อนรับ (ไม่จำเป็นต้องขออนุมัติตั้งรหัสผ่าน)
- รหัสผ่าน
[user:one-time-login-url]
เข้าสู่ระบบสามารถพบได้ในโทเค็น