CRM و سیستم عامل های دادهایمیل مارکتینگ و ایمیل مارکتینگ اتوماسیون

قدرت رمز عبور را با جاوا اسکریپت یا جی کوئری و عبارات منظم بررسی کنید (همچنین با مثال های سمت سرور!)

من در حال تحقیق درباره یافتن یک مثال خوب از یک جستجوگر رمز عبور رمز عبور بودم که از آن استفاده می کند جاوا اسکریپت و عبارات با قاعده (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";
  }
}

و اگر فقط به دنبال یک تولید کننده رمز عبور عالی هستید، من یک ابزار آنلاین کوچک خوب برای آن ساخته ام.

ژنراتور رمز عبور

Douglas Karr

Douglas Karr بنیانگذار موسسه Martech Zone و یک متخصص شناخته شده در تحول دیجیتال. داگلاس به راه‌اندازی چندین استارت‌آپ موفق MarTech کمک کرده است، بیش از ۵ میلیارد دلار در خرید و سرمایه‌گذاری Martech کمک کرده است و همچنان به راه‌اندازی پلتفرم‌ها و خدمات خود ادامه می‌دهد. او یکی از بنیانگذاران است Highbridge، یک شرکت مشاوره تحول دیجیتال. داگلاس همچنین نویسنده کتاب راهنمای Dummie و کتاب رهبری تجاری است.

مقالات مرتبط

33 نظرات

  1. متشکرم! متشکرم! متشکرم! من 2 هفته است که با کد قوی رمز عبور لعنتی از وب سایت های دیگر فریب می دهم و موهایم را بیرون می کشم. مال شما کوتاه است، درست همانطور که من می خواهم کار می کند و بهتر از همه، برای یک تازه کار جاوا اسکریپت به راحتی قابل تغییر است! من می‌خواستم حکم قدرت را دریافت کنم و اجازه ندهم فرم پست رمز عبور کاربر را به‌روزرسانی کند، مگر اینکه تست قدرت را انجام دهد. کد دیگران خیلی پیچیده بود یا درست کار نمی کرد یا چیز دیگری. دوستت دارم! XXXXX

  2. سلام، اول از همه از زحمات شما بسیار سپاسگزارم، من سعی کردم از این با Asp.net استفاده کنم اما کار نکرد، من دارم استفاده می کنم

    به جای برچسب، و کار نکرد، هیچ پیشنهادی دارید؟!

  3. "P@s$w0rD" با قدرت نمایش داده می شود، اگرچه با حمله دیکشنری نسبتاً سریع شکسته می شود…
    برای استقرار چنین ویژگی در یک راه حل حرفه ای، من معتقدم که ترکیب این الگوریتم با بررسی فرهنگ لغت مهم است.

  4. با تشکر از این کد کوچک، اکنون می توانم از آن برای آزمایش قدرت رمز عبور خود استفاده کنم، زمانی که بازدیدکنندگان رمز عبور خود را وارد می کنند.

  5. این نوع "بررسی کننده قدرت" افراد را به مسیر بسیار خطرناکی هدایت می کند. تنوع کاراکترها را بیش از طول عبارت عبور ارزیابی می‌کند و باعث می‌شود که رمزهای عبور کوتاه‌تر و متنوع‌تر را قوی‌تر از گذرواژه‌های طولانی‌تر و کمتر متفاوت ارزیابی کند. این اشتباهی است که کاربران شما را در صورت مواجهه با تهدید جدی هک به دردسر می‌اندازد.

    1. من مخالف نیستم، جردن! مثال به سادگی به عنوان نمونه ای از فیلمنامه ارائه شد. توصیه من به مردم این است که از ابزار مدیریت رمز عبور برای ایجاد عبارات عبور مستقل برای هر سایتی که مختص آن سایت است استفاده کنند. با تشکر!

  6. شما یک پس انداز زنده هستید! من در حال تجزیه رشته ها به سمت چپ و راست و وسط بودم و فکر کردم راه بهتری وجود دارد و قطعه کد شما را با استفاده از Regex پیدا کردم. توانستم با آن برای سایت من سر و صدا کنم ... شما نمی دانید چقدر این کمک کرد. خیلی ممنون داگلاس!!

شما چه فکر میکنید؟

این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بدانید که چگونه نظر شما پردازش می شود.