ส่งรหัสผ่านของผู้ใช้ในเมล


20

ฉันต้องการส่งอีเมลเตือนความจำถึงผู้ใช้เพื่อเข้าสู่เว็บไซต์ของฉันด้วยชื่อผู้ใช้และรหัสผ่าน สคริปต์เมลของฉันพร้อมใช้รหัสล็อกอิน แต่ฉันไม่ทราบวิธีถอดรหัสรหัสผ่านของผู้ใช้

ใครสามารถบอกฉันว่าฉันควรได้รับรหัสผ่านที่เชื่อมโยงกับบัญชีผู้ใช้หรือไม่

คำตอบ:


31

คุณไม่สามารถรับรหัสผ่านของผู้ใช้จากสิ่งที่ 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);
    }
  }

4
ใช่เป็นการรักษาความปลอดภัยตามปกติสำหรับระบบที่มีผู้ใช้หลายคน Drupal ใช้ URL การเข้าสู่ระบบครั้งเดียวในการรีเซ็ตรหัสผ่าน หมายความว่าผู้ใช้ไม่ได้รับรหัสผ่านที่เป็นข้อมูลดิบ แต่ได้รับลิงก์พิเศษเพื่อเข้าสู่ระบบและตั้งค่าใหม่ เวลาหนึ่ง URL [user:one-time-login-url]เข้าสู่ระบบสามารถพบได้ในโทเค็น
kalabro

15

โปรด! อย่าทำอย่างนั้น!

การใช้ระบบเข้าสู่ระบบบนเว็บแอปพลิเคชันนั้นเป็นเรื่องง่าย การใช้ระบบเข้าสู่ระบบที่ปลอดภัยในเว็บแอปพลิเคชันเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิง มีหลายแง่มุมและรายละเอียดที่ต้องพิจารณาและ Drupal ทำงานได้ดีในการจัดการกับแง่มุมทั้งหมดที่อยู่นอกกรอบ

การเพิ่มคุณสมบัติที่คุณขอจะลดความปลอดภัยของแอปพลิเคชันของคุณลงอย่างมาก หากคุณสามารถถอดรหัสรหัสผ่านได้คุณได้ถอดแอปของคุณเพื่อความปลอดภัยที่สำคัญมาก

คำตอบอื่น ๆ อธิบายถึงวิธีแก้ปัญหาคำตอบของ BetaRide จะทำในสิ่งที่คุณถาม แต่ระวังให้ดี

โดยทั่วไปแล้วฉันอาจใช้วิธีต่อไปนี้มากกว่าหรือน้อยกว่า:

ในโมดูลที่กำหนดเอง

  1. ใช้hook_cronสิ่งนี้จะสร้างอาร์เรย์ที่มีอีเมลทั้งหมดที่ตรงกับเกณฑ์ที่คุณเลือก

  2. วนรอบอาร์เรย์และส่งอีเมลผ่าน drupal_mail อย่ามองเข้าไปในฟังก์ชั่น_user_mail_notify() kiamlaluno ที่เชื่อมโยงกับด้านบน

หากผู้ใช้ไม่เคยเข้าสู่ระบบคุณอาจต้องส่งอีเมลรหัสผ่านรีเซ็ต (ไม่แน่ใจที่นี่) อาจใช้drupal_mailและhook_mail_alterรวมกันเพื่อปรับแต่งการลงทะเบียนหรือรีเซ็ตรหัสผ่านอีเมลตามที่คุณต้องการ

หวังว่าจะช่วยได้ฉันรู้ว่ามันร่างเล็กน้อยเพราะฉันไม่ได้นำสิ่งใดที่คล้ายกันมาใช้ในประสบการณ์ Drupal ของฉันฉันเพิ่งปั๊มความคิดเล็ก ๆ น้อย ๆ เกี่ยวกับวิธีที่ผู้ใช้สามารถแจ้งเตือนผู้ใช้ได้อย่างปลอดภัย มีทางเลือกมากมายในการใช้รหัสผ่านแบบข้อความล้วนในอีเมล

โชคดีเพื่อน, เชียร์กับคุณและสวัสดีปีใหม่!


2
ประโยคแรกของคำตอบนี้จะต้องเน้นในรูปแบบตัวหนา 16 พอยต์และอาจเป็นหนึ่งในไม่กี่แห่งที่แท็กกะพริบอาจเหมาะสม
Omnifarious

9

คุณสามารถใช้โมดูลการเข้ารหัส AESเพื่อรับรหัสผ่านที่อ่านได้

อย่างไรก็ตามมีเหตุผลที่ดีว่าทำไมรหัสผ่านจึงไม่สามารถอ่านได้ใน Drupal มาตรฐาน IMHO ที่ใช้ลิงก์การกู้คืน pw ในตัวเดียวมีความปลอดภัยมากกว่า


0

คุณสามารถใช้โมดูลรหัสผ่านของบัญชีเพื่อส่งรหัสผ่านทางไปรษณีย์

โครงการทดลอง

นี่เป็นโครงการแซนด์บ็อกซ์ซึ่งมีรหัสทดลองสำหรับนักพัฒนาซอฟต์แวร์เท่านั้น

โมดูลขนาดเล็กนี้ให้โทเค็นรหัสผ่านบัญชีผู้ใช้สำหรับการตั้งค่าอีเมลของบัญชี ผู้ดูแลไซต์อนุญาตให้ส่งรหัสผ่านไปยังผู้ใช้ในการตั้งค่าการร้อง: -

  1. ยินดีต้อนรับ (ผู้ใช้ใหม่ที่สร้างโดยผู้ดูแลระบบ)
  2. ยินดีต้อนรับ (ไม่ต้องการการอนุมัติ)
  3. การเปิดใช้งานบัญชี
  4. ยินดีต้อนรับ (ไม่จำเป็นต้องขออนุมัติตั้งรหัสผ่าน)
  5. รหัสผ่าน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.