我刚刚读了一篇文章,说7个字符的密码不再安全。但是,如果服务器在每次登录尝试后增加重试登录尝试的时间,则暴力破解攻击是无用的。如何在asp.net中创建这样的逻辑?不知何故,我猜服务器端代码需要记住尝试登录的ip地址,并且应该在每次新尝试时增加响应时间?
发布于 2010-08-20 02:52:05
IP地址实际上并不是一种识别用户身份的安全方法。您可以尝试将最后一次登录尝试提交的时间存储在cookie中,但如果浏览器不接受它们,它的使用将受到限制。会话变量也需要cookie,所以它们是不存在的。
一些网站(我想到的是雅虎)在第三次尝试后开始显示验证码表单。除了您的登录详细信息外,您还必须正确回答验证码。
另一种选择是在X次尝试失败后禁用帐户(可以在您的数据库中跟踪),但我个人不喜欢这种做法,因为它往往会迫使我在忘记密码时打电话给别人重置密码。
发布于 2010-08-20 03:45:33
许多暴力攻击都发生在离线状态。这就是为什么失败的尝试锁定不能替代需要复杂的密码,使用适当的“盐”,和密钥加强。
发布于 2010-08-20 06:05:00
ASP.NET有一个内置的机制来防止对登录密码的暴力破解攻击。请参阅maxInvalidPasswordAttempts Membership property。
如果遵循安全最佳实践,例如安全地散列密码和阻止暴力破解攻击,IMHO 7个字符的密码对于大多数web应用程序(我的银行允许7个字符密码)是完全足够的。
一旦你获得了超过7或8个字符的密码,你实际上是在说“我的应用程序需要超级安全”,在这种情况下,你应该考虑单独的客户端SSL证书。要求密码中包含更多字符的结果是递减的。您的用户中有多少人可以记住复杂的8或9字符密码?他们最终会把它们写下来。就我个人而言,我被任何需要我创建超复杂密码的网站拒之门外。
只要设置正确,ASP.NET成员资格就可以为您完成大部分有关安全性的繁重工作。
但是,有一些ASP.NET成员资格不能为您做的事情,例如:
确保HTTPS is used
)的情况
有关安全最佳实践的更多信息,请查看OWASP
https://stackoverflow.com/questions/3525134
复制相似问题