Verificați puterea parolei cu JavaScript sau jQuery și expresii regulate (de asemenea, cu exemple pe partea de server!)

Făceam câteva cercetări despre găsirea unui bun exemplu de verificare a puterii parolei care se folosește JavaScript și Expresii obisnuite (regex). În aplicația de la serviciu, facem o postare înapoi pentru a verifica puterea parolei și este destul de incomod pentru utilizatorii noștri.
Ce este Regex?
O expresie regulată este o secvență de caractere care definesc un model de căutare. De obicei, astfel de modele sunt utilizate de algoritmi de căutare a șirurilor pentru găsi or găsiți și înlocuiți operații pe șiruri sau pentru validarea intrărilor.
Acest articol nu este cu siguranță pentru a vă învăța expresii regulate. Știți doar că abilitatea de a utiliza expresii regulate vă va simplifica în mod absolut dezvoltarea pe măsură ce căutați modele în text. De asemenea, este important să rețineți că majoritatea limbajelor de dezvoltare au optimizat utilizarea expresiei regulate ... deci, mai degrabă decât analizarea și căutarea șirurilor pas cu pas, Regex este de obicei mult mai rapid atât pe partea serverului, cât și pe partea clientului.
Am căutat pe web destul de puțin înainte să găsesc un exemplu a unor expresii regulate grozave care caută o combinație de lungime, caractere și simboluri. Cu toate acestea, codul a fost puțin excesiv pentru gustul meu și adaptat pentru .NET. Așa că am simplificat codul și l-am pus în JavaScript. Acest lucru îl face să valideze puterea parolei în timp real pe browserul clientului înainte de a o posta înapoi... și oferă un feedback utilizatorului cu privire la puterea parolei.
Tastați o parolă
Cu fiecare lovitură a tastaturii, parola este testată în funcție de expresia regulată și apoi feedback-ul este furnizat utilizatorului într-un interval de sub ea.
Funcția de consolidare a parolei JavaScript
Expresii obisnuite faceți o treabă fantastică de a minimiza lungimea codului. Această funcție JavaScript verifică puterea unei parole și dacă anularea acesteia este ușoară, medie, dificilă sau extrem de dificil de ghicit. Pe măsură ce persoana scrie, afișează sfaturi pentru a o încuraja să fie mai puternică. Validează parola pe baza:
- Lungime – Dacă lungimea este mai mică sau mai mare de 8 caractere.
- Caz mixt – Dacă parola are atât caractere majuscule, cât și litere mici.
- Numere – Dacă parola include numere.
- Caractere speciale – Dacă parola include caractere speciale.
Funcția afișează dificultatea, precum și câteva sfaturi pentru întărirea în continuare a parolei.
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;
}
} Dacă doriți să actualizați culoarea vârfului, puteți face și asta prin actualizarea codului după // Return results linia.
// Get the paragraph element
var strengthElement = document.getElementById("passwordStrength");
// Return results
if (strength < 2) {
strengthElement.textContent = "Easy to guess. " + tips;
strengthElement.style.color = "red";
} else if (strength === 2) {
strengthElement.textContent = "Medium difficulty. " + tips;
strengthElement.style.color = "orange";
} else if (strength === 3) {
strengthElement.textContent = "Difficult. " + tips;
strengthElement.style.color = "black";
} else {
strengthElement.textContent = "Extremely difficult. " + tips;
strengthElement.style.color = "green";
} Funcția de putere a parolei jQuery
Cu jQuery, de fapt nu trebuie să scriem formularul cu o actualizare la intrare:
<form>
<label for="password">Enter password:</label>
<input type="password" id="password">
<p id="password-strength"></p>
</form> De asemenea, putem modifica culoarea mesajelor dacă dorim.
$(document).ready(function() {
$('#password').on('input', function() {
var password = $(this).val();
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. ";
}
// Update the text and color based on the password strength
var passwordStrengthElement = $('#password-strength');
if (strength < 2) {
passwordStrengthElement.text("Easy to guess. " + tips);
passwordStrengthElement.css('color', 'red');
} else if (strength === 2) {
passwordStrengthElement.text("Medium difficulty. " + tips);
passwordStrengthElement.css('color', 'orange');
} else if (strength === 3) {
passwordStrengthElement.text("Difficult. " + tips);
passwordStrengthElement.css('color', 'black');
} else {
passwordStrengthElement.text("Extremely difficult. " + tips);
passwordStrengthElement.css('color', 'green');
}
});
}); Întărirea cererii de parolă
Este esențial să nu validați doar construcția parolei în JavaScript. Acest lucru ar permite oricui cu instrumente de dezvoltare a browserului să ocolească scriptul și să folosească orice parolă pe care o dorește. Ar trebui să utilizați ÎNTOTDEAUNA o verificare la nivelul serverului pentru a valida puterea parolei înainte de a o stoca pe platforma dvs.
Funcție PHP pentru puterea parolei
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";
}
}
Funcția Python pentru puterea parolei
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"
Funcția C# pentru puterea parolei
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";
}
}
Funcția Java pentru puterea parolei
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";
}
}
Și dacă sunteți doar în căutarea unui generator de parole grozav, am construit un mic instrument online drăguț pentru asta.



