
قدرت رمز عبور را با جاوا اسکریپت یا جی کوئری و عبارات منظم بررسی کنید (همچنین با مثال های سمت سرور!)
من در حال تحقیق درباره یافتن یک مثال خوب از یک جستجوگر رمز عبور رمز عبور بودم که از آن استفاده می کند جاوا اسکریپت و عبارات با قاعده (regex). در برنامهای که در محل کار من است، یک پست برای تأیید قدرت رمز عبور انجام میدهیم و این برای کاربران ما بسیار ناخوشایند است.
Regex چیست؟
عبارت منظم دنباله ای از کاراکترها است که الگوی جستجو را تعریف می کند. معمولاً این الگوها توسط الگوریتم های جستجوی رشته برای استفاده می شوند پیدا کردن or پیدا و جایگزین کنید عملیات روی رشته ها یا برای اعتبار سنجی ورودی.
این مقاله قطعاً برای آموزش اصطلاحات منظم نیست. فقط بدانید که هنگام جستجوی الگوهای موجود در متن ، توانایی استفاده از عبارات منظم پیشرفت شما را کاملاً ساده می کند. همچنین توجه به این نکته مهم است که اکثر زبان های توسعه استفاده منظم از عبارات را بهینه کرده اند ... بنابراین به جای تجزیه و جستجوی مرحله به مرحله رشته ها ، Regex معمولاً از نظر سرور و سمت کلاینت بسیار سریعتر است.
قبل از پیدا کردن ، کاملاً وب را جستجو کردم به عنوان مثال برخی از عبارات منظم عالی که به دنبال ترکیبی از طول، کاراکترها و نمادها هستند. با این حال، کد برای سلیقه من کمی بیش از حد بود و برای دات نت طراحی شده بود. بنابراین کد را ساده کردم و در جاوا اسکریپت قرار دادم. این باعث میشود قبل از ارسال مجدد، قدرت رمز عبور را در زمان واقعی در مرورگر مشتری تأیید کند... و بازخوردهایی را در مورد قدرت رمز عبور به کاربر ارائه میدهد.
رمز عبور را بنویسید
با هر ضربه صفحه کلید ، رمز عبور در برابر بیان منظم آزمایش می شود و سپس بازخورد در یک بازه در زیر آن به کاربر ارائه می شود.
عملکرد قدرت رمز عبور جاوا اسکریپت
La عبارات با قاعده یک کار فوق العاده برای به حداقل رساندن طول کد انجام دهید. این تابع جاوا اسکریپت قدرت یک رمز عبور و اینکه آیا حذف آن آسان، متوسط، دشوار یا بسیار دشوار است را بررسی می کند. همانطور که شخص تایپ می کند، نکاتی را در مورد تشویق او به قوی تر شدن نشان می دهد. رمز عبور را بر اساس موارد زیر تأیید می کند:
- طول - اگر طول آن کمتر یا بیشتر از 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، ما در واقع مجبور نیستیم فرم را با به روز رسانی 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"
تابع سی شارپ برای قدرت رمز عبور
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 هفته است که با کد قوی رمز عبور لعنتی از وب سایت های دیگر فریب می دهم و موهایم را بیرون می کشم. مال شما کوتاه است، درست همانطور که من می خواهم کار می کند و بهتر از همه، برای یک تازه کار جاوا اسکریپت به راحتی قابل تغییر است! من میخواستم حکم قدرت را دریافت کنم و اجازه ندهم فرم پست رمز عبور کاربر را بهروزرسانی کند، مگر اینکه تست قدرت را انجام دهد. کد دیگران خیلی پیچیده بود یا درست کار نمی کرد یا چیز دیگری. دوستت دارم! XXXXX
خواهش میکنم! خواهش میکنم! خواهش میکنم!
من هم شما را دوست دارم!
از اینکه کدی نوشتید که دقیقاً همان کاری را که روی قوطی میگوید انجام میدهد، متشکرم!
سلام، اول از همه از زحمات شما بسیار سپاسگزارم، من سعی کردم از این با Asp.net استفاده کنم اما کار نکرد، من دارم استفاده می کنم
به جای برچسب، و کار نکرد، هیچ پیشنهادی دارید؟!
به Nisreen: کد موجود در کادر برجسته شده با cut'n'paste کار نمی کند. نقل قول تک به هم ریخته است. هر چند کد پیوند نمایش خوب است.
سلام، من فیلمنامه شما را دوست دارم! من آن را به هلندی ترجمه کردم و در انجمن خود در اینجا پست کردم!
کارت عالی بود! دقیقاً چگونه باید روی مشتری انجام شود
کار بسیار خوبی….
ممنون داگلاس، من از آن برای کار فعلی خود استفاده می کنم.
"P@s$w0rD" با قدرت نمایش داده می شود، اگرچه با حمله دیکشنری نسبتاً سریع شکسته می شود…
برای استقرار چنین ویژگی در یک راه حل حرفه ای، من معتقدم که ترکیب این الگوریتم با بررسی فرهنگ لغت مهم است.
با کمی تغییر در XULRunner عالی کار می کند. با تشکر!
با تشکر از این کد کوچک، اکنون می توانم از آن برای آزمایش قدرت رمز عبور خود استفاده کنم، زمانی که بازدیدکنندگان رمز عبور خود را وارد می کنند.
کد نویسی عالی
فیلمنامه فوق العاده بود. من در پروژه فعلی خود استفاده کرده بودم
با تشکر از شما برای به اشتراک گذاری!
بیان بسیار ساده و خارق العاده من به عنوان یک آزمایشگر TC های خود را از این عبارت استخراج کردم.
با تشکر از شما برای به اشتراک گذاری. شما چند لینک خراب در این صفحه دارید. FYI.
کسی میتونه بگه چرا مال من کار نکرد..
من همه کدها را کپی کردم و در notepad++ قرار دادم، اما اصلا کار نمی کند؟
لطفا کمکم کن..
خارق العاده!!!!! متشکرم.
کار عالی مرد! ساده و موثر. خیلی ممنون از به اشتراک گذاری!
متشکرم
خوب، thx. اما... نمونه ای از pw قوی چیست؟ 'نمی توانم یکی را پیدا کنم!-{}
این نوع "بررسی کننده قدرت" افراد را به مسیر بسیار خطرناکی هدایت می کند. تنوع کاراکترها را بیش از طول عبارت عبور ارزیابی میکند و باعث میشود که رمزهای عبور کوتاهتر و متنوعتر را قویتر از گذرواژههای طولانیتر و کمتر متفاوت ارزیابی کند. این اشتباهی است که کاربران شما را در صورت مواجهه با تهدید جدی هک به دردسر میاندازد.
من مخالف نیستم، جردن! مثال به سادگی به عنوان نمونه ای از فیلمنامه ارائه شد. توصیه من به مردم این است که از ابزار مدیریت رمز عبور برای ایجاد عبارات عبور مستقل برای هر سایتی که مختص آن سایت است استفاده کنند. با تشکر!
ممنون عالی کار میکنه
با تشکر از شما خوب کار می کند
واقعا متشکرم که بارها این را جستجو کردید اما در نهایت من پست شما را دریافت کردم و واقعاً شگفت زده شدم. متشکرم
مرسی رفیق. به تازگی در وب سایت من مستقر شده و بسیار خوب کار می کند.
عاشق شنیدن آن! خیلی خوش آمدید!
از اشتراک گذاری شما سپاسگزارم! به دنبال تقویت قدرت رمز عبور در وب سایت ما بوده ام و این یکی همانطور که می خواستم کار کرد. خیلی ممنونم!
با تشکر، امیدوارم بتوانید آن را در صورت نیاز سفارشی کنید.
شما یک پس انداز زنده هستید! من در حال تجزیه رشته ها به سمت چپ و راست و وسط بودم و فکر کردم راه بهتری وجود دارد و قطعه کد شما را با استفاده از Regex پیدا کردم. توانستم با آن برای سایت من سر و صدا کنم ... شما نمی دانید چقدر این کمک کرد. خیلی ممنون داگلاس!!
عالی برای شنیدن!