防止网站上的蛮力登录
作为对最近的Twitter劫持和杰夫的词典攻击文章的回应,什么是保护您的网站免受暴力登录攻击的最佳方式?
杰夫的帖子建议每次尝试登录的时间都会延长,并且评论中的建议是在第二次失败尝试后添加验证码。
这两个看起来都是好主意,但你怎么知道它是什么“尝试数字”呢? 您不能依赖会话ID(因为攻击者每次都可以更改它)或IP地址(更好,但易受僵尸网络攻击)。 简单地使用用户名记录它可以使用延迟方法锁定一个合法用户(或者至少使他们的登录过程非常缓慢)。
思考? 建议?
我认为数据库坚持给定账户的短暂锁定期(1-5分钟)是解决这个问题的唯一方法。 数据库中的每个userid
包含timeOfLastFailedLogin
和numberOfFailedAttempts
。 当numbeOfFailedAttempts > X
您锁定几分钟。
这意味着你正在锁定有问题的userid
一段时间,但不是永久性的。 这也意味着你正在为每次登录尝试更新数据库(当然,除非它被锁定),这可能会导致其他问题。
亚洲至少有一个全国NAT,因此IP不能用于任何事情。
在我看来,有几种可能性,每种都有利弊:
强制使用安全密码
多次尝试后锁定
验证码
简单的知识检查
不同的登录名和用户名
使用整个句子作为密码
正如你所看到的,“好”的解决方案都取决于用户的选择,这再次揭示了用户是链中最弱的元素。
还有其他建议吗?
你可以做Google做的事情。 这是在一定数量的trys后,他们有一个captacha出现。 经过几次与captacha,你锁定他们几分钟。
链接地址: http://www.djcxy.com/p/3689.html上一篇: Preventing Brute Force Logins on Websites
下一篇: What's the best method for sanitizing user input with PHP?