Проверете силата на паролата с JavaScript или jQuery и регулярни изрази (също и с примери от страна на сървъра!)
Правих някои изследвания за намиране на добър пример за проверка на паролата за сила, която използва JavaScript намлява Редовни изрази (Регулярно изражение). В приложението в моята работа правим публикация обратно, за да проверим силата на паролата и това е доста неудобно за нашите потребители.
Какво е Regex?
Регулярният израз е последователност от символи, които определят модела на търсене. Обикновено такива модели се използват от алгоритми за търсене на низове за намерите or намерете и заменете операции върху низове или за проверка на входа.
Тази статия определено не е за да ви научи на регулярни изрази. Просто знайте, че възможността за използване на регулярни изрази ще опрости абсолютно вашето развитие, докато търсите шаблони в текста. Също така е важно да се отбележи, че повечето езици за разработка са оптимизирали използването на регулярни изрази ... така че вместо да анализира и търси низове стъпка по стъпка, Regex обикновено е много по-бърз както от страна на сървъра, така и от страна на клиента.
Потърсих в мрежата доста преди да открия пример на някои страхотни регулярни изрази, които търсят комбинация от дължина, знаци и символи. Кодът обаче беше малко пресилен за моя вкус и пригоден за .NET. Така че опростих кода и го поставих в JavaScript. Това го кара да проверява силата на паролата в реално време в браузъра на клиента, преди да я публикува обратно… и предоставя известна обратна връзка на потребителя относно силата на паролата.
Напишете парола
С всеки ход на клавиатурата паролата се тества спрямо регулярния израз и след това се предоставя обратна връзка на потребителя в интервал под него.
Функция за сила на паролата на 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;
}
}
Ако искате да актуализирате цвета на върха, можете да направите и това, като актуализирате кода след // Return results
Онлайн.
// 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";
}
Функция за сила на паролата на jQuery
С jQuery всъщност не е нужно да пишем формуляра с актуализация oninput:
<form>
<label for="password">Enter password:</label>
<input type="password" id="password">
<p id="password-strength"></p>
</form>
Можем също така да променим цвета на съобщенията, ако желаем.
$(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');
}
});
});
Втвърдяване на вашата заявка за парола
От съществено значение е да не потвърждавате само конструкцията на паролата във вашия 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";
}
}
И ако просто търсите страхотен генератор на пароли, създадох хубав малък онлайн инструмент за това.