ตรวจสอบความแข็งแรงของรหัสผ่านด้วย JavaScript และนิพจน์ทั่วไป

ตรวจสอบความแข็งแรงของรหัสผ่านด้วย JavaScript และนิพจน์ทั่วไป

ฉันกำลังทำการวิจัยเกี่ยวกับการค้นหาตัวอย่างที่ดีของตัวตรวจสอบความแข็งแรงของรหัสผ่านที่ใช้ JavaScript และ นิพจน์ทั่วไป (Regex) ในแอปพลิเคชันที่ทำงานของฉันเราได้ทำการโพสต์เพื่อยืนยันความปลอดภัยของรหัสผ่านและผู้ใช้ของเราค่อนข้างไม่สะดวก

Regex คืออะไร?

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

บทความนี้ไม่ได้สอนนิพจน์ทั่วไปให้คุณอย่างแน่นอน เพียงแค่ทราบว่าความสามารถในการใช้นิพจน์ทั่วไปจะทำให้การพัฒนาของคุณง่ายขึ้นอย่างมากเมื่อคุณค้นหารูปแบบในข้อความ สิ่งสำคัญที่ควรทราบคือภาษาสำหรับการพัฒนาส่วนใหญ่ได้ปรับให้เหมาะสมกับการใช้นิพจน์ทั่วไป ... ดังนั้นแทนที่จะแยกวิเคราะห์และค้นหาสตริงทีละขั้นตอนโดยทั่วไปแล้ว Regex จะเร็วกว่ามากทั้งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์

ฉันค้นหาเว็บค่อนข้างน้อยก่อนที่จะพบ ตัวอย่าง ของนิพจน์ทั่วไปที่ดีบางส่วนที่มองหาความยาวอักขระและสัญลักษณ์ร่วมกัน อย่างไรก็ตามรหัสนั้นมากเกินไปสำหรับรสนิยมของฉันเล็กน้อยและเหมาะสำหรับ. NET ดังนั้นฉันจึงทำให้โค้ดง่ายขึ้นและใส่ลงใน JavaScript สิ่งนี้ทำให้ตรวจสอบความปลอดภัยของรหัสผ่านแบบเรียลไทม์บนเบราว์เซอร์ของไคลเอนต์ก่อนโพสต์กลับ ... และให้ข้อเสนอแนะแก่ผู้ใช้เกี่ยวกับความแข็งแกร่งของรหัสผ่าน

พิมพ์รหัสผ่าน

ในแต่ละจังหวะของแป้นพิมพ์รหัสผ่านจะถูกทดสอบกับนิพจน์ทั่วไปจากนั้นป้อนกลับให้กับผู้ใช้ในช่วงที่อยู่ด้านล่าง




พิมพ์รหัสผ่าน

นี่คือรหัส

พื้นที่ปลูก นิพจน์ทั่วไป ทำงานได้อย่างยอดเยี่ยมในการลดความยาวของโค้ด:

  • อักขระเพิ่มเติม - หากความยาวไม่เกิน 8 อักขระ
  • อ่อนแอ - หากความยาวน้อยกว่า 10 อักขระและไม่มีสัญลักษณ์ตัวพิมพ์ใหญ่และข้อความผสมกัน
  • กลาง - หากมีความยาว 10 อักขระขึ้นไปและมีสัญลักษณ์ตัวพิมพ์ใหญ่และข้อความผสมกัน
  • แข็งแรง - หากมีความยาว 14 อักขระขึ้นไปและมีสัญลักษณ์ตัวพิมพ์ใหญ่และข้อความผสมกัน

<script language="javascript">
    function passwordChanged() {
        var strength = document.getElementById('strength');
        var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
        var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
        var enoughRegex = new RegExp("(?=.{8,}).*", "g");
        var pwd = document.getElementById("password");
        if (pwd.value.length == 0) {
            strength.innerHTML = 'Type Password';
        } else if (false == enoughRegex.test(pwd.value)) {
            strength.innerHTML = 'More Characters';
        } else if (strongRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:green">Strong!</span>';
        } else if (mediumRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:orange">Medium!</span>';
        } else {
            strength.innerHTML = '<span style="color:red">Weak!</span>';
        }
    }
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>

การทำให้คำขอรหัสผ่านของคุณแข็งขึ้น

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

34 คอมเมนต์

  1. 1

    ฉันพบตัวตรวจสอบความปลอดภัยของรหัสผ่านอื่น อัลกอริทึมของพวกเขาขึ้นอยู่กับพจนานุกรมคำ ลองใช้ที่ microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx และอีกหนึ่งรายการที่ itsimpl.com - http://www.itsimpl.com

  2. 2

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

  3. 4

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

    ใช้งานได้ทันทีซึ่งเหมาะสำหรับคนอย่างฉันที่ไม่สามารถเขียนโค้ดจาวาสคริปต์ได้!

  4. 5
  5. 6

    สวัสดีก่อนอื่นขอบคุณมากสำหรับความพยายามของคุณฉันพยายามใช้สิ่งนี้กับ Asp.net แต่ไม่ได้ผลฉันกำลังใช้

    แทนที่จะใช้แท็ก แต่ไม่ได้ผลมีข้อเสนอแนะหรือไม่!

  6. 7

    สำหรับ Nisreen: รหัสในช่องที่ไฮไลต์ใช้ไม่ได้กับ cut'n'paste คำพูดเดียวก็เลอะ แม้ว่ารหัสของลิงค์สาธิตนั้นใช้ได้

  7. 8
  8. 9
  9. 10
  10. 11

    “ P @ s $ w0rD” แสดงให้เห็นว่าแข็งแกร่งแม้ว่ามันจะแตกเร็วพอสมควรด้วยการโจมตีจากพจนานุกรม ...
    ในการปรับใช้คุณสมบัติดังกล่าวในโซลูชันระดับมืออาชีพฉันเชื่อว่าการรวมอัลกอริทึมนี้เข้ากับการตรวจสอบพจนานุกรมเป็นสิ่งสำคัญ

  11. 12
  12. 13

    ขอบคุณสำหรับรหัสเล็ก ๆ น้อย ๆ นี้ฉันสามารถใช้เพื่อทดสอบความปลอดภัยของรหัสผ่านเมื่อผู้เยี่ยมชมของฉันป้อนรหัสผ่านของพวกเขา

  13. 14
  14. 15
  15. 16
  16. 17

    การแสดงออกที่เรียบง่ายและยอดเยี่ยม ฉันในฐานะผู้ทดสอบได้รับ TC ของฉันจากนิพจน์นี้

  17. 18

    ขอบคุณสำหรับการแชร์. คุณมีลิงก์ที่ใช้งานไม่ได้เล็กน้อยในหน้านี้ FYI.

  18. 19

    ใครช่วยบอกทีทำไมมันไม่ได้ผล ..

    ฉันคัดลอกรหัสทั้งหมดและวางลงใน notepad ++ แต่มันใช้ไม่ได้เลย?
    ช่วยฉันที ..

  19. 20
  20. 21
  21. 22
  22. 23
  23. 24

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

    • 25

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

  24. 26
  25. 27
  26. 28

    ฉันรู้สึกขอบคุณจริงๆที่คุณถูกค้นหาหลายครั้ง แต่สุดท้ายฉันได้รับโพสต์ของคุณและรู้สึกทึ่งมาก ขอบคุณ

  27. 29
  28. 31

    ขอขอบคุณที่แบ่งปัน! กำลังมองหาเพื่อเพิ่มความแข็งแกร่งของรหัสผ่านบนเว็บไซต์ของเราและรหัสนี้ก็ได้ผลตามที่ฉันต้องการ ขอบคุณมาก!

  29. 33

    คุณเป็นผู้ช่วยชีวิต! ฉันกำลังแยกวิเคราะห์สตริงทางซ้ายขวาและตรงกลางและคิดว่ามีวิธีที่ดีกว่าและพบโค้ดของคุณโดยใช้ Regex สามารถกุ๊กกิ๊กกับเว็บไซต์ของฉันได้…คุณไม่รู้หรอกว่าสิ่งนี้ช่วยได้มากแค่ไหน ขอบคุณมาก Douglas !!

คุณคิดอย่างไร?

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.