Ich habe eine Situation, in der ich ein Benutzerkennwort in der Weboberfläche meines Systems bewerten möchte, damit sie wissen, ob sie ein falsches Kennwort haben, bevor sie auf Senden klicken.
Schlüsselanforderungen:
- Muss in der Lage sein, das Passwort zu bewerten, nicht nur bestanden / nicht bestanden.
- Sollte das Formular deaktivieren, wenn das Kennwort unter einem Schwellenwert liegt, kann der Benutzer es nicht senden.
- Schön aussehen. :) :)
- Verwenden Sie jQuery nicht - wir verwenden derzeit Mochikit und Y! UI in diesem System.
Ich habe viele in jQuery geschriebene Passwortanzeigen gefunden und Dinge wie http://www.passwordmeter.com/ , die zu ausführlich sind.
Kann jemand einen guten Drop-in-Javascript-Passwort-Rater vorschlagen, den ich verwenden kann, oder ein Beispiel geben, wie man einen schreibt?
javascript
passwords
Jerub
quelle
quelle
V4cc!nat!0n#3
ist ein schrecklich schwaches Passwort (weniger als eine Stunde geknackt) , währendmonitor coke cursor fat
es außerordentlich stark ist (in 146.000 Jahrhunderten geknackt). Stellen Sie sicher, dass die von Ihnen verwendete Passwortprüfung gültige Ergebnisse liefert (dh Komplexitätsanforderungen machen Passwörter schwächer, nicht stärker)Antworten:
Hier ist eine Sammlung von Skripten: http://webtecker.com/2008/03/26/collection-of-password-strength-scripts/
Ich denke, beide bewerten das Passwort und verwenden jQuery nicht ... aber ich weiß nicht, ob sie native Unterstützung für das Deaktivieren des Formulars haben?
quelle
Update : hat hier eine js-Geige erstellt, um sie live zu sehen: http://jsfiddle.net/HFMvX/
Ich habe unzählige Google-Suchanfragen durchlaufen und nichts Befriedigendes gefunden. Ich mag es, wie Passpack es so grundlegend rückgängig gemacht hat, hier geht's:
function scorePassword(pass) { var score = 0; if (!pass) return score; // award every unique letter until 5 repetitions var letters = new Object(); for (var i=0; i<pass.length; i++) { letters[pass[i]] = (letters[pass[i]] || 0) + 1; score += 5.0 / letters[pass[i]]; } // bonus points for mixing it up var variations = { digits: /\d/.test(pass), lower: /[a-z]/.test(pass), upper: /[A-Z]/.test(pass), nonWords: /\W/.test(pass), } var variationCount = 0; for (var check in variations) { variationCount += (variations[check] == true) ? 1 : 0; } score += (variationCount - 1) * 10; return parseInt(score); }
Gute Passwörter erreichen ungefähr 60 Punkte. Hier ist die Funktion, um dies in Worte zu fassen:
function checkPassStrength(pass) { var score = scorePassword(pass); if (score > 80) return "strong"; if (score > 60) return "good"; if (score >= 30) return "weak"; return ""; }
Vielleicht möchtest du das ein bisschen stimmen, aber ich fand es gut für mich
quelle
qwER43@!
=> Punktzahl 70 = gut,Tr0ub4dour&3
=> Punktzahl 80 = stark,correcthorsebatterystaple
=> Punktzahl 86 = stark.checkPassStrength(pass)
Stecker hinzu, um die Schwäche zu erkennenif( pass.length < 8 ) { return "poor"; }
, die die Leute dazu ermutigt, etwas lange genug mit gemischten Zeichen zu verwenden, das je nach Länge schwach, gut oder stark sein wird. alles andere ist wirklich arm.abcdefghijklmnopqrstuvwxyz
ergibt eine Punktzahl von 130. Es sollte nach Mustern usw. suchen, an die ein Hacker denken würde.Password Strength Algorithm: Password Length: 5 Points: Less than 4 characters 10 Points: 5 to 7 characters 25 Points: 8 or more Letters: 0 Points: No letters 10 Points: Letters are all lower case 20 Points: Letters are upper case and lower case Numbers: 0 Points: No numbers 10 Points: 1 number 20 Points: 3 or more numbers Characters: 0 Points: No characters 10 Points: 1 character 25 Points: More than 1 character Bonus: 2 Points: Letters and numbers 3 Points: Letters, numbers, and characters 5 Points: Mixed case letters, numbers, and characters Password Text Range: >= 90: Very Secure >= 80: Secure >= 70: Very Strong >= 60: Strong >= 50: Average >= 25: Weak >= 0: Very Weak
Einstellungen Schalten Sie auf wahr oder falsch um, wenn Sie ändern möchten, was im Kennwort aktiviert ist
var m_strUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var m_strLowerCase = "abcdefghijklmnopqrstuvwxyz"; var m_strNumber = "0123456789"; var m_strCharacters = "!@#$%^&*?_~" Check password function checkPassword(strPassword) { // Reset combination count var nScore = 0; // Password length // -- Less than 4 characters if (strPassword.length < 5) { nScore += 5; } // -- 5 to 7 characters else if (strPassword.length > 4 && strPassword.length < 8) { nScore += 10; } // -- 8 or more else if (strPassword.length > 7) { nScore += 25; } // Letters var nUpperCount = countContain(strPassword, m_strUpperCase); var nLowerCount = countContain(strPassword, m_strLowerCase); var nLowerUpperCount = nUpperCount + nLowerCount; // -- Letters are all lower case if (nUpperCount == 0 && nLowerCount != 0) { nScore += 10; } // -- Letters are upper case and lower case else if (nUpperCount != 0 && nLowerCount != 0) { nScore += 20; } // Numbers var nNumberCount = countContain(strPassword, m_strNumber); // -- 1 number if (nNumberCount == 1) { nScore += 10; } // -- 3 or more numbers if (nNumberCount >= 3) { nScore += 20; } // Characters var nCharacterCount = countContain(strPassword, m_strCharacters); // -- 1 character if (nCharacterCount == 1) { nScore += 10; } // -- More than 1 character if (nCharacterCount > 1) { nScore += 25; } // Bonus // -- Letters and numbers if (nNumberCount != 0 && nLowerUpperCount != 0) { nScore += 2; } // -- Letters, numbers, and characters if (nNumberCount != 0 && nLowerUpperCount != 0 && nCharacterCount != 0) { nScore += 3; } // -- Mixed case letters, numbers, and characters if (nNumberCount != 0 && nUpperCount != 0 && nLowerCount != 0 && nCharacterCount != 0) { nScore += 5; } return nScore; } // Runs password through check and then updates GUI function runPassword(strPassword, strFieldID) { // Check password var nScore = checkPassword(strPassword); // Get controls var ctlBar = document.getElementById(strFieldID + "_bar"); var ctlText = document.getElementById(strFieldID + "_text"); if (!ctlBar || !ctlText) return; // Set new width ctlBar.style.width = (nScore*1.25>100)?100:nScore*1.25 + "%"; // Color and text // -- Very Secure /*if (nScore >= 90) { var strText = "Very Secure"; var strColor = "#0ca908"; } // -- Secure else if (nScore >= 80) { var strText = "Secure"; vstrColor = "#7ff67c"; } // -- Very Strong else */ if (nScore >= 80) { var strText = "Very Strong"; var strColor = "#008000"; } // -- Strong else if (nScore >= 60) { var strText = "Strong"; var strColor = "#006000"; } // -- Average else if (nScore >= 40) { var strText = "Average"; var strColor = "#e3cb00"; } // -- Weak else if (nScore >= 20) { var strText = "Weak"; var strColor = "#Fe3d1a"; } // -- Very Weak else { var strText = "Very Weak"; var strColor = "#e71a1a"; } if(strPassword.length == 0) { ctlBar.style.backgroundColor = ""; ctlText.innerHTML = ""; } else { ctlBar.style.backgroundColor = strColor; ctlText.innerHTML = strText; } } // Checks a string for a list of characters function countContain(strPassword, strCheck) { // Declare variables var nCount = 0; for (i = 0; i < strPassword.length; i++) { if (strCheck.indexOf(strPassword.charAt(i)) > -1) { nCount++; } } return nCount; }
Sie können selbst nach Ihren Wünschen anpassen.
quelle