4

感谢您的关注。所有真诚有用的答案都被投票赞成。

我使用密码强度计让用户知道他们选择的密码有多强。但是这个密码检查器显然没有涵盖密码在字典攻击下的弱点。我该如何检查,是否值得?

此外,我的常规密码检查器最初使用浏览器中的 javascript 运行(无需传输)。如果我想检查字典攻击弱点,我必须将其传输到脚本。我的理解是我不应该清楚地传输它。

有人可以帮我解决这个问题。如何检查密码在字典攻击下是否不弱,以及如何在传输到我的脚本之前对其进行加密?

额外信息:

为什么我认为除了常规密码表之外我还需要字典攻击检查?正如你们中的一些人所指出的,用户可以选择像 P@ssword 或 Yellow12 这样的密码。但是我遇到的大多数密码强度检查器都会将此视为一个好的密码。至少我正在使用Yet Another Password Meter并且确实如此(我实际上认为它是更好的密码检查器之一。)如果有人知道更强大的密码检查器,请提及它,但前提是您根据经验确定它更强大;)

但我的问题确实是:如何对密码进行字典攻击检查?我在某处读到它是针对哈希完成的,但是我在哪里进行搜索?一旦我知道如何去做,我就会决定它是否值得。

感谢迄今为止提供帮助的所有人:)

4

5 回答 5

6

意见会有所不同,有些人会说检查字典单词很重要。我不同意,而是赞成要求不同大小写的字母、数字和特殊字符,如!@#$%^&*()_-=+。显然密码应该区分大小写。

由于数字和特殊字符的存在,字典攻击不太可能成功。假设有 1000 个常用密码。现在通过添加所需的大写字母和特殊字符,假设用户是“懒惰的”,他们选择将第一个字母大写并在末尾添加一个特殊字符。1000 大小的字典现在超过 30,000。

此外,还应设置帐户锁定以避免字典攻击。并且可能会根据您的应用程序限制 IP 地址尝试登录的频率。

在运行脚本时,可能仍然需要避免使用一些非常常见的密码。例如,我不允许密码 p@ssword 一词或任何密码变体。

编辑:验证码虽然被大多数人(包括我)讨厌,但在几次登录失败后也可能是合适的,以避免暴力登录尝试。

于 2009-10-18T06:24:04.453 回答
4

我比其他问题来得晚,我很惊讶没有人指出字典检查可能并不详尽。至少没有人说过这么多话。

我认为您需要一个大字典,其中每个条目都经过哈希处理并与哈希密码进行比较。这将允许您说用户选择的密码不在您的字典中,但是您如何确定它是完整的?

显然,你不能确定。你包括外来词吗?技术词汇?

密码破解者可以访问更好的字典吗?

我认为你所能做的就是建议用户如何创建一个好的密码——给他们看几个例子——但让它成为他们的选择。

并做 SSL 的事情。

于 2009-10-18T07:30:22.000 回答
4

还有一点——如果你控制了网站,你可以通过限制用户尝试用户/通行证的次数来阻止字典攻击。

很高兴您希望您的用户拥有更好的密码,并且您应该继续朝着这个方向前进,但是对于字典/蛮力攻击的更好解决方案将是对登录尝试失败的指数退避解决方案。没有真正的用户会尝试在 10 秒内使用所有不同的密码登录 1000 次。

于 2009-10-19T09:37:44.527 回答
3

如果您使用适当的复杂性要求(长度、大小写混合、数字、符号,并且可能禁止连续重复一个字符),那么我会说这并不值得。如果您处于需要这样做的情况,那么密码身份验证可能无论如何都不足以满足您的情况。

于 2009-10-18T06:24:50.970 回答
3

SSL

如果您的网站以任何方式或在任何页面上请求敏感的个人信息,包括密码,那么您应该在整个网站上启用并强制实施 SSL。这将确保所有密码都以加密形式从浏览器传输到服务器,并且没有人可以从网络上嗅出密码或修改传输中的页面(并更改表单回发 URL)。

密码表

您应该完全在浏览器中运行您的密码计。您应该接受用户输入的所有密码(最短长度为,例如 6 个字符),但可以在浏览器中随意提示用户,无论他们输入的是弱密码还是强密码。

于 2009-10-18T06:31:42.357 回答