
Перевірте надійність пароля за допомогою JavaScript або jQuery та регулярних виразів (також із прикладами на стороні сервера!)
Я проводив деякі дослідження, щоб знайти хороший приклад перевірки надійності пароля, який використовує JavaScript та Регулярні вирази (Регекс). У моєму робочому додатку ми робимо повідомлення, щоб перевірити надійність пароля, і це досить незручно для наших користувачів.
Що таке Regex?
Регулярний вираз - це послідовність символів, що визначають шаблон пошуку. Зазвичай такі шаблони використовуються алгоритмами пошуку рядків для знаходити or знайти і замінити операції над рядками або для перевірки вводу.
Ця стаття точно не навчить вас регулярних висловів. Просто знайте, що можливість використання регулярних виразів абсолютно спростить вашу розробку під час пошуку шаблонів у тексті. Важливо також зазначити, що більшість мов розробки оптимізували використання регулярних виразів ... тому замість парсингу та пошуку рядків, регулярний вираз зазвичай набагато швидший як на сервері, так і на стороні клієнта.
Я досить довго шукав в Інтернеті, перш ніж знайшов приклад деяких чудових регулярних виразів, які шукають комбінацію довжини, символів і символів. Однак код був трохи надмірним на мій смак і адаптованим для .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";
}
}
І якщо ви просто шукаєте чудовий генератор паролів, я створив для цього гарний маленький онлайн-інструмент.
Я знайшов ще одну перевірку надійності пароля. Їх алгоритм заснований на словнику слів. Спробуйте на сайті microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx і один на itsimpl.com - http://www.itsimpl.com
ДЯКУЮ ТОБІ! ДЯКУЮ ТОБІ! ДЯКУЮ ТОБІ! Я 2 тижні морочився з клятим кодом надійності пароля з інших веб-сайтів і висмикував собі волосся. Ваш короткий, працює так само, як я хочу, і, що найголовніше, його легко змінити для новачка JavaScript! Я хотів зафіксувати вердикт про міцність і не дозволити формі опублікувати фактичне оновлення пароля користувача, якщо він не пройшов тест на міцність. Код інших людей був надто складним, чи не працював належним чином, чи щось інше. Я тебе люблю! XXXXX
Ласкаво просимо! Ласкаво просимо! Ласкаво просимо!
Я теж тебе люблю!
Дякуємо, що написали шматок коду, який виконує саме те, що написано на банку!
Привіт, перш за все велике спасибі за ваші зусилля, я намагався використати це з Asp.net, але не спрацював, я використовую
замість тегу,і це не спрацювало,будь-які пропозиції?!
Для Нісрін: код у виділеному полі не працює з вирізанням і вставленням. Одинарна лапка переплутана. Проте код демонстраційного посилання правильний.
Гей, мені подобається твій сценарій! Я переклав його голландською мовою і розмістив на своєму форумі тут!
чудова робота! як саме це слід робити з клієнтом
дуже гарна робота….
Дякую Дугласу, я використовую його для своєї поточної роботи.
“P @ s $ w0rD” відображається як сильний, хоча він може бути зламаний досить швидко за допомогою атаки на словника ...
Щоб застосувати таку функцію на професійному рішенні, я вважаю, що важливо поєднати цей алгоритм із перевіренням на словники.
Чудово працює в XULRunner з невеликими змінами. Спасибі!
Дякую за цей маленький код, тепер я можу використовувати його для перевірки міцності мого пароля, коли мої відвідувачі .вводять свої паролі,
Чудовий фрагмент кодування
Сценарій був супер. Я використовував у нашому поточному проекті
Дякуємо за участь!
Такий простий і фантастичний вираз. Я як тестувальник вивів свої TC з цього виразу.
Дякую, що поділився. У вас є кілька непрацюючих посилань на цій сторінці. FYI.
хтось може сказати, чому у мене це не вийшло ..
я скопіював увесь код і вставив його в блокнот ++, але він взагалі не працює?
будь ласка, допоможи мені..
Фантастично !!!!! Дякую.
Чудовий хлопець на роботі! Простий та ефективний. Щиро дякую за обмін!
спасибі
Добре, thx. Але ... Що є прикладом СИЛЬНОГО pw? 'не можу знайти! - {}
Цей тип "перевірки сили" веде людей дуже небезпечним шляхом. Він оцінює різноманітність символів за довжиною парольної фрази, змушуючи оцінювати коротші та різноманітніші паролі як міцніші, ніж довші та менш різноманітні. Це помилка, яка завадить вашим користувачам проблеми, якщо вони коли-небудь зіткнуться з серйозною загрозою злому.
Я не погоджуюсь, Джордане! Приклад був просто викладений як приклад сценарію. Я рекомендую людям використовувати інструмент управління паролями для створення незалежних парольних фраз для будь-якого унікального для нього веб-сайту. Дякую!
спасибі це чудово працює.
Дякую вам, що працює нормально
Я дуже вдячний, що вас неодноразово обшукували, але, нарешті, я отримав ваше повідомлення і дуже вражений. ДЯКУЮ
Дякую, друже. Просто розміщений на моєму веб-сайті, і він працює дуже добре.
Люблю слухати це! Ви, швидше ласкаво просимо!
Я вдячний Вам за поділ! Я прагнув покращити надійність пароля на нашому веб-сайті, і цей працював так, як я хотів. Дуже дякую!
Дякуємо, сподіваємось, ви зможете налаштувати його за потреби.
Ви живий заощаджувач! Я розбирав рядки ліворуч праворуч і по центру і думав, що є кращий спосіб, і знайшов ваш фрагмент коду за допомогою Regex. Був у змозі поспілкуватися з цим для мого сайту ... Ви навіть не уявляєте, наскільки це допомогло. Дуже дякую Дугласу !!
Чудово чути!