قدرت رمز عبور را با JavaScript و عبارات منظم بررسی کنید

قدرت رمز عبور را با JavaScript و عبارات منظم بررسی کنید

من در حال تحقیق درباره یافتن یک مثال خوب از یک جستجوگر رمز عبور رمز عبور بودم که از آن استفاده می کند جاوا اسکریپت و عبارات با قاعده (Regex) در برنامه کار من ، ما برای تأیید قدرت رمز عبور یک پست ارسال می کنیم و برای کاربران ما بسیار ناخوشایند است.

Regex چیست؟

عبارت منظم دنباله ای از کاراکترها است که الگوی جستجو را تعریف می کند. معمولاً این الگوها توسط الگوریتم های جستجوی رشته برای استفاده می شوند پیدا کردن or پیدا و جایگزین کنید عملیات روی رشته ها یا برای اعتبار سنجی ورودی. 

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

قبل از پیدا کردن ، کاملاً وب را جستجو کردم به عنوان مثال برخی از عبارات منظم عالی که به دنبال ترکیبی از طول ، نویسه ها و نمادها هستند. با این حال ، کد برای ذائقه من کمی زیاد بود و برای دات نت طراحی شده بود. بنابراین کد را ساده کردم و در جاوا اسکریپت قرار دادم. این امر باعث می شود قبل از ارسال مجدد آن ، قدرت گذرواژه را به طور لحظه ای بر روی مرورگر مشتری تأیید کند و در مورد قدرت رمز عبور بازخوردی را به کاربر ارائه دهد.

رمز عبور را بنویسید

با هر ضربه صفحه کلید ، رمز عبور در برابر بیان منظم آزمایش می شود و سپس بازخورد در یک بازه در زیر آن به کاربر ارائه می شود.




رمز عبور را تایپ کنید

این کد است

La عبارات با قاعده یک کار خارق العاده برای به حداقل رساندن طول کد انجام دهید:

  • شخصیت های بیشتر - اگر طول آن کمتر از 8 کاراکتر باشد.
  • ضعیف - اگر طول کمتر از 10 کاراکتر باشد و شامل ترکیبی از نمادها ، کلمات ، متن نباشد.
  • متوسط - اگر طول 10 حرف یا بیشتر باشد و دارای ترکیبی از نمادها ، کلمات ، متن باشد.
  • قوی - اگر طول 14 حرف یا بیشتر باشد و دارای ترکیبی از نمادها ، کلمات ، متن باشد.

<script language="javascript">
    function passwordChanged() {
        var strength = document.getElementById('strength');
        var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
        var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
        var enoughRegex = new RegExp("(?=.{8,}).*", "g");
        var pwd = document.getElementById("password");
        if (pwd.value.length == 0) {
            strength.innerHTML = 'Type Password';
        } else if (false == enoughRegex.test(pwd.value)) {
            strength.innerHTML = 'More Characters';
        } else if (strongRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:green">Strong!</span>';
        } else if (mediumRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:orange">Medium!</span>';
        } else {
            strength.innerHTML = '<span style="color:red">Weak!</span>';
        }
    }
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>

درخواست رمز ورود خود را سخت کنید

ضروری است که شما فقط ساخت رمز عبور را در Javascript خود تأیید نکنید. این امکان را برای هر کسی که دارای ابزار توسعه مرورگر است ، فراهم می کند تا اسکریپت را دور بزند و از رمز عبور مورد نظر خود استفاده کند. قبل از ذخیره رمز عبور در سیستم عامل خود ، باید همیشه از یک سمت سمت سرور برای تأیید قدرت رمز عبور استفاده کنید.

34 نظرات

  1. 1
  2. 2

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

  3. 4

    خدا را شکر برای افرادی که واقعاً می توانند یک قطعه کد را به درستی بنویسند.
    تجربه مشابه جانیس را داشت.

    این دقیقاً خارج از جعبه کار می کند که برای افرادی مانند من که نمی توانند جاوا اسکریپت کدنویسی کنند عالی است!

  4. 5
  5. 6

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

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

  6. 7

    به Nisreen: کد موجود در کادر برجسته شده با cut'n'paste کار نمی کند. نقل قول تک به هم ریخته است. هر چند کد پیوند نمایش خوب است.

  7. 8

    سلام، من فیلمنامه شما را دوست دارم! من آن را به هلندی ترجمه کردم و در انجمن خود در اینجا پست کردم!

  8. 9
  9. 10
  10. 11

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

  11. 12
  12. 13

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

  13. 14
  14. 15
  15. 16
  16. 17
  17. 18
  18. 19

    کسی میتونه بگه چرا مال من کار نکرد..

    من همه کدها را کپی کردم و در notepad++ قرار دادم، اما اصلا کار نمی کند؟
    لطفا کمکم کن..

  19. 20
  20. 21
  21. 22
  22. 23
  23. 24

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

    • 25

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

  24. 26
  25. 27
  26. 28

    واقعا متشکرم که بارها این را جستجو کردید اما در نهایت من پست شما را دریافت کردم و واقعاً شگفت زده شدم. متشکرم

  27. 29
  28. 31

    از اشتراک گذاری شما سپاسگزارم! به دنبال تقویت قدرت رمز عبور در وب سایت ما بوده ام و این یکی همانطور که می خواستم کار کرد. خیلی ممنونم!

  29. 33

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

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

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