შეამოწმეთ პაროლის სიძლიერე JavaScript-ით ან jQuery-ით და რეგულარული გამონათქვამებით (სერვერის მხარის მაგალითებითაც!)
მე ვატარებდი გარკვეულ გამოკვლევას პაროლის სიძლიერის შემმოწმებლის კარგი მაგალითის მოძიებაში JavaScript მდე რეგულარული გამონათქვამები (რეგექსი). ჩემს სამუშაო აპლიკაციაში, ჩვენ ვაკეთებთ პოსტს პაროლის სიძლიერის შესამოწმებლად და ეს საკმაოდ მოუხერხებელია ჩვენი მომხმარებლებისთვის.
რა არის რეგექსი?
რეგულარული გამოხატვა არის სიმბოლოების თანმიმდევრობა, რომლებიც განსაზღვრავს ძიების ნიმუშს. ჩვეულებრივ, ასეთ შაბლონებს იყენებენ სტრიქონის ძიების ალგორითმებით მოვძებნოთ 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";
}
}
და თუ თქვენ უბრალოდ ეძებთ პაროლის შესანიშნავ გენერატორს, მე შევქმენი ლამაზი პატარა ონლაინ ინსტრუმენტი ამისთვის.