
בדוק את עוצמת הסיסמה עם JavaScript וביטויים רגולריים (גם עם דוגמאות בצד השרת!)
ערכתי מחקר על מציאת דוגמה טובה לבודק חוזק סיסמה המשתמש JavaScript ו ביטויים רגילים (רגקס). ביישום בעבודתי אנו מבצעים פוסט בחזרה כדי לאמת את חוזק הסיסמה וזה די לא נוח עבור המשתמשים שלנו.
מה זה רגקס?
ביטוי רגולרי הוא רצף של תווים המגדירים דפוס חיפוש. בדרך כלל, דפוסים כאלה משמשים אלגוריתמים לחיפוש מחרוזות עבור למצוא or מצא והחלף פעולות על מיתרים, או לצורך אימות קלט.
מאמר זה בהחלט לא אמור ללמד אתכם ביטויים קבועים. רק דע כי היכולת להשתמש בביטויים רגולריים תפשט לחלוטין את ההתפתחות שלך כשאתה מחפש תבניות בטקסט. חשוב לציין כי ברוב שפות הפיתוח אופטימיזציה של שימוש בביטוי קבוע ... אז במקום לנתח ולחפש מחרוזות שלב אחר שלב, Regex בדרך כלל מהירה הרבה יותר הן בשרת והן בצד הלקוח.
חיפשתי באינטרנט לא מעט לפני שמצאתי דוגמה של כמה ביטויים נהדרים המחפשים שילוב של אורך, תווים וסמלים. עם זאת, הקוד היה מוגזם לטעמי והותאם ל- .NET. אז פשטתי את הקוד ושמתי אותו ב- JavaScript. זה גורם לו לאמת את חוזק הסיסמה בזמן אמת בדפדפן הלקוח לפני פרסום זה בחזרה ... ומספק משוב למשתמש על חוזק הסיסמה.
הקלד סיסמא
בכל פעימה במקלדת, הסיסמה נבדקת על פי הביטוי הרגולרי ואז ניתן משוב למשתמש בטווח מתחתיו.
הנה הקוד
אל האני ביטויים רגילים לעשות עבודה נפלאה של מזעור אורך הקוד. פונקציית Javascript זו בודקת את עוצמת הסיסמה והאם קל, בינוני, קשה או קשה מאוד לנחש את סיכולה. כשהאדם מקליד, הוא מציג טיפים לעודד אותו להיות חזק יותר. זה מאמת את הסיסמה על סמך:
- אורך - אם האורך הוא מתחת או מעל 8 תווים.
- מקרה מעורב – אם הסיסמה כוללת תווים גדולים וקטנים.
- מספרים – אם הסיסמה כוללת מספרים.
- תווים מיוחדים – אם הסיסמה כוללת תווים מיוחדים.
הפונקציה מציגה את הקושי וכן כמה טיפים להקשחת הסיסמה נוספת.
function checkPasswordStrength(password) {
// Initialize variables
var strength = 0;
var tips = "";
// Check password length
if (password.length < 8) {
tips += "Make the password longer. ";
} else {
strength += 1;
}
// Check for mixed case
if (password.match(/[a-z]/) && password.match(/[A-Z]/)) {
strength += 1;
} else {
tips += "Use both lowercase and uppercase letters. ";
}
// Check for numbers
if (password.match(/\d/)) {
strength += 1;
} else {
tips += "Include at least one number. ";
}
// Check for special characters
if (password.match(/[^a-zA-Z\d]/)) {
strength += 1;
} else {
tips += "Include at least one special character. ";
}
// Return results
if (strength < 2) {
return "Easy to guess. " + tips;
} else if (strength === 2) {
return "Medium difficulty. " + tips;
} else if (strength === 3) {
return "Difficult. " + tips;
} else {
return "Extremely difficult. " + tips;
}
}
הקשחת בקשת הסיסמה שלך
זה חיוני שלא לאמת רק את בניית הסיסמה בתוך ה- Javascript שלך. זה יאפשר לכל מי שיש לו כלים לפיתוח דפדפן לעקוף את הסקריפט ולהשתמש בכל הסיסמה שהם רוצים. עליך להשתמש תמיד בבדיקה בצד השרת כדי לאמת את חוזק הסיסמה לפני שתשמור אותה בפלטפורמה שלך.
פונקציית PHP עבור חוזק סיסמה
function checkPasswordStrength($password) {
// Initialize variables
$strength = 0;
// Check password length
if (strlen($password) < 8) {
return "Easy to guess";
} else {
$strength += 1;
}
// Check for mixed case
if (preg_match("/[a-z]/", $password) && preg_match("/[A-Z]/", $password)) {
$strength += 1;
}
// Check for numbers
if (preg_match("/\d/", $password)) {
$strength += 1;
}
// Check for special characters
if (preg_match("/[^a-zA-Z\d]/", $password)) {
$strength += 1;
}
// Return strength level
if ($strength < 2) {
return "Easy to guess";
} else if ($strength === 2) {
return "Medium difficulty";
} else if ($strength === 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
פונקציית Python עבור חוזק סיסמה
def check_password_strength(password):
# Initialize variables
strength = 0
# Check password length
if len(password) < 8:
return "Easy to guess"
else:
strength += 1
# Check for mixed case
if any(char.islower() for char in password) and any(char.isupper() for char in password):
strength += 1
# Check for numbers
if any(char.isdigit() for char in password):
strength += 1
# Check for special characters
if any(not char.isalnum() for char in password):
strength += 1
# Return strength level
if strength < 2:
return "Easy to guess"
elif strength == 2:
return "Medium difficulty"
elif strength == 3:
return "Difficult"
else:
return "Extremely difficult"
פונקציית C# עבור חוזק סיסמה
public string CheckPasswordStrength(string password) {
// Initialize variables
int strength = 0;
// Check password length
if (password.Length < 8) {
return "Easy to guess";
} else {
strength += 1;
}
// Check for mixed case
if (password.Any(char.IsLower) && password.Any(char.IsUpper)) {
strength += 1;
}
// Check for numbers
if (password.Any(char.IsDigit)) {
strength += 1;
}
// Check for special characters
if (password.Any(ch => !char.IsLetterOrDigit(ch))) {
strength += 1;
}
// Return strength level
if (strength < 2) {
return "Easy to guess";
} else if (strength == 2) {
return "Medium difficulty";
} else if (strength == 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
פונקציית Java עבור חוזק סיסמה
public String checkPasswordStrength(String password) {
// Initialize variables
int strength = 0;
// Check password length
if (password.length() < 8) {
return "Easy to guess";
} else {
strength += 1;
}
// Check for mixed case
if (password.matches(".*[a-z].*") && password.matches(".*[A-Z].*")) {
strength += 1;
}
// Check for numbers
if (password.matches(".*\\d.*")) {
strength += 1;
}
// Check for special characters
if (password.matches(".*[^a-zA-Z\\d].*")) {
strength += 1;
}
// Return strength level
if (strength < 2) {
return "Easy to guess";
} else if (strength == 2) {
return "Medium difficulty";
} else if (strength == 3) {
return "Difficult";
} else {
return "Extremely difficult";
}
}
מצאתי בודק חוזק סיסמאות אחר. האלגוריתם שלהם מבוסס על מילון מילים. נסה אחד ב-microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx ואחד באתר itsimpl.com - http://www.itsimpl.com
תודה! תודה! תודה! אני משתטה כבר שבועיים עם קוד חוזק סיסמה ארור מאתרים אחרים ושולפת את השיער שלי. שלך קצר, עובד בדיוק כמו שאני רוצה והכי טוב, קל למתחילים ב-Javascript לשנות! רציתי ללכוד את פסק הדין בכוח ולא לתת לטופס לפרסם בפועל את הסיסמה של המשתמש אלא אם כן הוא עמד במבחן החוזק. הקוד של אנשים אחרים היה מסובך מדי או לא עבד כמו שצריך או משהו אחר. אני אוהב אותך! XXXXXX
בבקשה! בבקשה! בבקשה!
גם אני אוהב אותך!
תודה שכתבת קטע קוד שעושה בדיוק את מה שכתוב על הפחית!
היי, קודם כל תודה רבה על המאמצים שלך, ניסיתי להשתמש בזה עם Asp.net אבל לא עבד, אני משתמש
במקום תג, וזה לא עבד, יש הצעות?!
לנסרין: הקוד בתיבה המודגשת לא עובד עם cut'n'paste. הציטוט היחיד מבולגן. עם זאת, הקוד של קישור ההדגמה בסדר.
היי, אני אוהב את התסריט שלך! תרגמתי את זה להולנדית, ופרסמתי את זה בפורום שלי כאן!
עבודה טובה! בדיוק איך זה צריך להיעשות על הלקוח
עבודה יפה מאוד….
תודה דאגלס, אני משתמש בו לעבודה הנוכחית שלי.
"P@s$w0rD" מופיע בעוצמה, למרות שהוא יפצח די מהר עם התקפת מילון...
כדי לפרוס תכונה כזו על פתרון מקצועי, אני מאמין שחשוב לשלב את האלגוריתם הזה עם בדיקת מילון.
עובד נהדר ב- XULRunner עם קצת שינוי סביב. תודה!
תודה על הקוד הקטן הזה, עכשיו אני יכול להשתמש בו כדי לבדוק את עוצמת הסיסמה שלי כאשר המבקרים שלי מזינים את הסיסמאות שלהם,
חתיכת קידוד נהדרת
התסריט היה מעולה. השתמשתי בפרויקט הנוכחי שלנו
תודה לך על שיתוף!
ביטוי כל כך פשוט ופנטסטי. אני כבוחן הפקתי את ה-TCs שלי מהביטוי הזה.
תודה על השיתוף. יש לך כמה קישורים שבורים בדף זה. לידיעתך.
מישהו יכול להגיד למה זה לא עבד אצלי..
העתקתי את כל הקוד, והדבקתי אותו ב-notepad++, אבל זה לא עובד בכלל?
בבקשה תעזור לי..
פַנטַסטִי!!!!! תודה.
אחלה עבודה! פשוט ויעיל. תודה רבה לשיתוף!
תודה
טוב תודה. אבל... מהי דוגמה ל- STRONG pw? 'לא מוצא אחד!-{}
סוג זה של "בודק כוח" מוביל אנשים בדרך מסוכנת מאוד. הוא מעריך את גיוון התווים על פני אורך ביטוי הסיסמה, מה שמוביל אותו לדרג סיסמאות קצרות ומגוונות יותר כחזקות יותר מאשר סיסמאות ארוכות ופחות מגוונות. זהו כשל שיגרום למשתמשים שלך להסתבך אם הם יתמודדו אי פעם עם איום פריצה רציני.
אני לא מסכים, ג'ורדן! הדוגמה פשוט הוצאה כדוגמה לתסריט. ההמלצה שלי לאנשים היא להשתמש בכלי ניהול סיסמאות כדי ליצור ביטויי סיסמה עצמאיים לכל אתר שייחודיים לו. תודה!
תודה זה עובד מצוין.
תודה לך שזה עובד בסדר
אני באמת מעריך שחיפשת את זה הרבה פעמים אבל לבסוף קיבלתי את ההודעה שלך ואני ממש נדהמת. תודה
תודה חבר. פשוט נפרס באתר שלי וזה עובד טוב מאוד.
אוהב לשמוע את זה! אתם מוזמנים!
אני מעריך את השיתוף! חיפשתי להגביר את עוצמת הסיסמה באתר האינטרנט שלנו וזו עבדה כמו שרציתי. תודה רבה לך!
תודה, מקווה שתוכל להתאים אותו לפי הצורך.
אתה שומר חי! ניתוחתי מחרוזות משמאל לימין ולמרכז וחשבתי שיש דרך טובה יותר ומצאתי את פיסת הקוד שלך באמצעות Regex. היה מסוגל להתעסק עם זה עבור האתר שלי ... אין לך מושג כמה זה עזר. תודה רבה דאגלס!!
נהדר לשמוע!