בדוק את חוזק הסיסמה באמצעות JavaScript וביטויים רגולריים

בדוק את חוזק הסיסמה באמצעות JavaScript וביטויים רגולריים

ערכתי מחקר על מציאת דוגמה טובה לבודק חוזק סיסמה המשתמש JavaScript ו ביטויים רגילים (רגקס). ביישום בעבודתי אנו מבצעים פוסט בחזרה כדי לאמת את חוזק הסיסמה וזה די לא נוח עבור המשתמשים שלנו.

מה זה רגקס?

ביטוי רגולרי הוא רצף של תווים המגדירים דפוס חיפוש. בדרך כלל, דפוסים כאלה משמשים אלגוריתמים לחיפוש מחרוזות עבור למצוא 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
  2. 2

    תודה! תודה! תודה! אני מתעסק כבר שבועיים בקוד עוצמת הסיסמה הארור מאתרים אחרים ומושך את השיער שלי. שלך הוא קצר, עובד בדיוק כמו שאני רוצה והכי טוב, קל לשנות טירון javascript! רציתי לתפוס את פסק הדין לחוזק ולא לתת לטופס לפרסם עדכון של סיסמת המשתמש, אלא אם כן הוא עומד במבחן החוזק. הקוד של אנשים אחרים היה מסובך מדי או לא עבד כמו שצריך או משהו אחר. אני אוהב אותך! XXXXX

  3. 4

    תודה לאל לאנשים שבאמת יכולים לכתוב פיסת קוד כמו שצריך.
    הייתה לו אותה חוויה כמו ג'ניס.

    זה עובד מיד מהקופסה, וזה מושלם עבור אנשים כמוני שלא יכולים לקודד JavaScript!

  4. 5
  5. 6

    היי, קודם כל תודה רבה על מאמצי ur, ניסיתי להשתמש בזה עם Asp.net אבל לא עבד, אני משתמש

    במקום תג, וזה לא עבד, שום הצעה ?!

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

    "P @ s $ w0rD" נראה חזק, אם כי זה ייסדק די מהר עם התקפה מילונית ...
    כדי לפרוס תכונה כזו על פיתרון מקצועי, אני מאמין שחשוב לשלב אלגוריתם זה עם בדיקת מילון.

  11. 12
  12. 13

    תודה על הקוד הקטן הזה, עכשיו אני יכול להשתמש בו כדי לבדוק את חוזק הסיסמה שלי כאשר המבקרים שלי מכניסים את הסיסמאות שלהם,

  13. 14
  14. 15
  15. 16
  16. 17
  17. 18
  18. 19

    מישהו יכול להגיד, למה זה לא עבד בשלי ..

    העתקתי את כל הקוד, והדבקתי אותו לפנקס הרשימות ++, אבל זה בכלל לא עובד?
    בבקשה תעזור לי..

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

    סוג זה של "בודק כוח" מוביל אנשים בדרך מסוכנת מאוד. הוא מעריך את מגוון התווים לאורך אורך ביטוי הסיסמה, מה שמוביל אותו לדרג סיסמאות קצרות ומגוונות יותר כסיסמאות ארוכות ומגוונות פחות. זו כשל שיגרום למשתמשים שלך לצרות אם הם יתמודדו אי פעם עם איום פריצה רציני.

    • 25

      אני לא מסכים, ג'ורדן! הדוגמה הוצגה פשוט כדוגמה לתסריט. ההמלצה שלי לאנשים היא להשתמש בכלי לניהול סיסמאות ליצירת ביטויי סיסמא עצמאיים לכל אתר הייחודי לו. תודה!

  24. 26
  25. 27
  26. 28
  27. 29
  28. 31
  29. 33

    אתה שומר חיים! ניתחתי מחרוזות ימינה ומרכזית וחשבתי שיש דרך טובה יותר ומצאתי את פיסת הקוד שלך באמצעות Regex. הצלחתי להתעסק בזה לאתר שלי ... אין לך מושג כמה זה עזר. תודה רבה דאגלס !!

מה אתה חושב?

אתר זה משתמש Akismet כדי להפחית דואר זבל. למד כיצד הנתונים שלך מעובדים.