谢谢你的期待。所有真诚有用的答案都被投了票。
我使用密码强度计让用户知道他们选择的密码有多强。但是这个密码检查器显然没有涵盖字典攻击密码的弱点。我该如何检查,是否值得?
此外,我的常规密码检查器最初在浏览器中使用javascript运行(无需传输)。如果我想检查字典攻击弱点,我必须将其传输到脚本。我的理解是我不应该明确地传达它。
有人可以帮我解决这个问题。如何检查密码在字典攻击下是不是很弱,如何在传输到我的脚本之前对其进行加密?
额外信息:
为什么我认为除常规密码计外还需要字典攻击检查?正如你们中的一些人所指出的那样,用户可以选择像P @ ssword或Yellow12这样的密码。但是我遇到的大多数密码强度检查器都将此视为一个好密码。至少我正在使用Yet Another Password Meter而且确实如此(我实际上认为它是更好的密码检查器之一。)如果有人知道更强大的密码检查器,请提及它,但前提是你确定基于体验它更强大;)
但我的问题确实是:如何对密码进行字典攻击检查?我在某处读到它是针对哈希进行的,但我在哪里进行搜索?一旦我知道如何做到这一点,我将决定它是否值得。
感谢迄今为止得到帮助的所有人:)
答案 0 :(得分:6)
意见会有所不同,有些人会说检查词典单词很重要。我不同意,而是倾向于要求不同的字母,数字和特殊字符,例如!@#$%^& *()_- = +。显然密码应该区分大小写。
字典攻击在数字和特殊字符存在的情况下成功的可能性要小得多。可以说有1000个常用密码。现在添加一个必需的大写字母和特殊字符让我们假设用户是“懒惰”,他们选择制作第一个字母大写并在末尾添加一个特殊字符。这1000字大小的字典现在超过30,000。
此外,应该有帐户锁定以避免字典攻击。并且可能会限制IP地址根据您的应用程序尝试登录的频率。
在运行脚本时,可能仍有一些情况需要避免使用一些非常常见的密码。例如,我不允许使用密码p @ ssword或密码的任何变体。
编辑:验证码虽然受到大多数人(包括我)的憎恨,但在登录失败后也可能是合适的,以避免暴力登录尝试。
答案 1 :(得分:4)
我比其他人迟到这个问题,我很惊讶没有人指出字典检查可能不是详尽无遗的。至少没有人用这么多的话说过。
我认为您需要一个大型字典,其中每个条目都经过哈希处理并与哈希密码进行比较。这将允许您在字典中说用户选择的密码不,但您如何确定完成?
显然,你不能确定。你有外国词吗?技术词汇?密码破解程序是否可以访问更好的词典?
我认为您所能做的只是建议用户如何创建一个好的密码 - 向他们展示一些例子 - 但让它成为他们的选择。
做SSL事情。
答案 2 :(得分:4)
还有一点 - 如果您控制站点,则可以通过限制用户尝试用户/通过的次数来停止字典攻击。
很高兴你希望你的用户拥有更好的密码,你应该继续朝着这个方向前进,但是对于字典/暴力攻击来说,更好的解决方案将是失败的登录尝试的指数退避解决方案。没有真正的用户会尝试使用所有不同的密码在10秒内登录1000次。
答案 3 :(得分:3)
如果你正在使用适当的复杂性要求(长度,套管,数字,符号的混合,并且可能禁止连续重复一个字符),那么我会说这不值得。如果您处于需要的状态,那么密码验证可能不适合您的情况。
答案 4 :(得分:3)
如果您的网站以任何方式或任何页面请求敏感的个人信息包括密码,那么您应该在整个网站上启用并强制执行SSL。这将确保所有密码以加密形式从浏览器传输到服务器,并且没有人可以从网络上嗅探密码或修改传输中的页面(并更改表单回发网址)。
您应该完全在浏览器中运行密码计。您应该接受用户输入的任何和所有密码(最小长度,例如6个字符),但可以在浏览器中提示用户是否输入了弱密码或强密码。< / p>