
Проверете ја јачината на лозинката со 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";
}
}
Пајтон функција за јачина на лозинката
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";
}
}
Јава функција за јачина на лозинката
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, но не успеа, користам
наместо ознака,и не успеа,некој предлог?!
За Nisreen: кодот во означеното поле не работи со cut'n'paste. Единствениот цитат е измешан. Сепак, кодот на врската за демонстрација е во ред.
Еј, ми се допаѓа твоето сценарио! Го преведов на холандски, и го објавив на мојот форум овде!
одлична работа! точно како тоа треба да се направи на клиентот
многу убава работа….
Фала Даглас, го користам за мојата моментална работа.
„P@s$w0rD“ се покажува на силно, иако би се скршило прилично брзо со напад на речник…
За да се примени таква функција на професионално решение, верувам дека е важно да се комбинира овој алгоритам со проверка на речник.
Работи одлично во XULRunner со малку менување наоколу. Благодарам!
Ви благодариме за овој мал код, сега можам да го користам за да ја тестирам силата на мојата лозинка кога моите посетители ќе ги внесат своите лозинки,
Одлично парче кодирање
Сценариото беше супер. Го користев во нашиот сегашен проект
Ви благодариме за споделување!
Толку едноставен и фантастичен израз. Јас како тестер ги изведов моите TC од овој израз.
Ти благодарам што Сподели. Имате неколку скршени врски на оваа страница. FYI.
може некој да каже зошто моето не функционираше..
Го копирав целиот код и го залепив на notepad++, но воопшто не работи?
те молам помогни ми..
Фантастично!!!!! Ви благодарам.
Одлична работа момче! Едноставно и ефективно. Ви благодариме многу за споделувањето!
Ви благодарам
Добро, thx. Но... Каков е примерот за СИЛНО ПВ? „Не можам да најдам!-{}
Овој тип на „проверка на силата“ ги води луѓето по многу опасен пат. Ја вреднува различноста на знаците во однос на должината на лозинката, што доведува до оценување на пократките, поразновидни лозинки како посилни од подолгите, помалку разновидни лозинки. Тоа е заблуда што ќе ги доведе вашите корисници во неволја доколку некогаш се соочат со сериозна закана за хакирање.
Не се согласувам, Џордан! Примерот едноставно беше ставен како пример на сценариото. Моја препорака за луѓето е да користат алатка за управување со лозинка за да креираат независни фрази за пристап за која било локација што е единствена за неа. Благодарам!
благодарам одлично функционира.
Ви благодариме дека работи добро
Навистина ценам што ме пребаруваа многу пати, но на крајот го добив твојот пост и навистина сум воодушевен. ВИ БЛАГОДАРАМ
Фала другар. Штотуку распореден на мојата веб-страница и работи многу добро.
Обожавам да го слушам тоа! Ти си добредојдена!
Ценам што споделуваш! Се обидував да ја зајакнам јачината на лозинката на нашата веб-локација и оваа функционираше како што сакав. Ви благодарам многу!
Ви благодариме, се надеваме дека ќе можете да го приспособите по потреба.
Вие сте жив штедач! Ги анализирав низите лево десно и центар и мислев дека има подобар начин и го најдов вашето парче код користејќи Regex. Бев во можност да тинтрам со тоа за мојот сајт...Немате поим колку ова помогна. Фала многу Даглас!!
Одлично е да се слушне!