使用JavaScript和正则表达式检查密码强度

使用JavaScript和正则表达式检查密码强度

我正在做一些研究,以查找使用 JavaScript的 以及 常用表达 (正则表达式)。 在我工作的应用程序中,我们进行了回发操作以验证密码强度,这对我们的用户而言非常不便。

什么是正则表达式?

正则表达式是定义搜索模式的一系列字符。 通常,字符串搜索算法会将此类模式用于 发现 or 查找和替换 对字符串的操作,或用于输入验证。 

本文绝对不是要教您正则表达式。 只需知道使用正则表达式的功能将绝对简化您在搜索文本模式时的开发。 还需要注意的是,大多数开发语言都优化了正则表达式的使用方式…因此,Regex通常比服务器端和客户端都快得多,而不是分步解析和搜索字符串。

我在网上搜寻了很多之后才发现 例如 一些很好的正则表达式,它们查找长度,字符和符号的组合。 但是,对于我来说,该代码有点过分了,并且是针对.NET量身定制的。 因此,我简化了代码并将其放入JavaScript。 这使得它可以在回发之前在客户端的浏览器上实时验证密码强度……并向用户提供有关密码强度的一些反馈。

输入一个密码

每次敲击键盘时,都会针对正则表达式对密码进行测试,然后在其下方的跨度中向用户提供反馈。




输入密码

这是代码

常用表达 在减少代码长度方面做得非常出色:

  • 更多字符 –长度小于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

    谢谢! 谢谢! 谢谢! 我一直在鬼混两个星期,从其他网站获得该死的密码强度代码,然后拔头发。 您的简短,可以像我想要的那样工作,最重要的是,JavaScript新手可以轻松修改! 我想捕获强度判定,除非满足强度测试,否则不要让表单发布实际更新用户的密码。 其他人的代码太复杂,或者工作不正常或其他原因。 我爱你! XXXXX

  3. 4

    感谢上帝,他们实际上可以正确地编写一段代码。
    有和贾尼斯一样的经历。

    开箱即用,非常适合像我这样无法编写javascript代码的人!

  4. 5
  5. 6

    嗨,首先,非常感谢您的努力,我试图在Asp.net上使用它,但是没有用,我正在使用

    而不是标签,并且没有任何建议?!

  6. 7
  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

    这种“强度检查器”使人们走上了非常危险的道路。 它在整个密码短语长度上重视字符多样性,从而使它对较短,更多样化的密码的评价要强于较长,不那么多样化的密码。 如果用户遇到严重的黑客威胁,这将使您的用户陷入困境。

  24. 26
  25. 27
  26. 28
  27. 29
  28. 31
  29. 33

    您是个救星! 我在左右左右解析字符串,并认为有更好的方法,并使用Regex找到了您的代码段。 能够在我的网站上进行修饰...您不知道这对您有多大帮助。 非常感谢道格拉斯!

你觉得呢?

本网站使用Akismet来减少垃圾邮件。 了解您的数据如何处理.