我想阻止机器人攻击受密码保护的弱帐户。 (例如,这发生在ebay和其他大型网站上)
所以我将设置一个(mem-)缓存值,包括ip,尝试次数和上次尝试的时间戳(memcache-fall-out)。
但是如果机器人试图用一个密码打开任何帐户呢?例如,机器人尝试使用密码“password123”的所有500.000 Useraccounts。也许10会开。
所以我的尝试是用try尝试缓存ip并将max-try设置为~50。我会在成功登录后删除它。因此,好机器人只需每49次尝试重新锁定一个有效帐户即可登录。
有没有办法做对吗? 大平台对此有何看法? 我该怎么做才能防止白痴通过重试50次来阻止代理上的所有用户?
如果没有最佳实践 - 这是否意味着任何平台都是强力的?至少在重置计数器时有提示吗?
答案 0 :(得分:6)
我认为您可以将您的解决方案与验证码混合使用:
答案 1 :(得分:5)
有些网站在您开始输入验证码以及您的用户名/密码之前,可能会给您两到三次尝试。成功登录后,验证码就会消失。
答案 2 :(得分:3)
几天前在Coding Horror上有一篇相对好的文章。
答案 3 :(得分:2)
虽然代码专注于Django,但对最佳实践方法on Simon Willison’s blog进行了一些非常好的讨论。他使用memcached来跟踪IP和登录失败。
答案 4 :(得分:1)
当用户设置密码时,您可以使用password strength checker,以确保他们没有使用简单的强制密码。
编辑:为了清楚起见,这不应被视为您试图解决的问题的完整解决方案,但应该与其他一些答案一起考虑。
答案 5 :(得分:0)
你永远无法防止一组僵尸程序从许多不同的IP地址中尝试此操作。
来自同一个IP地址:我想说如果你看到一个“可疑”行为的例子(无效的用户名,或几个登录尝试不正确的有效帐户),只需阻止登录几秒钟。如果它是合法用户,他们不会介意等待几秒钟。如果它是一个机器人,这将使它们减慢到不切实际的程度。如果您继续看到IP地址的行为,只需阻止它们 - 但为合法用户留下一个带外门(拨打电话#x,或通过电子邮件发送此地址)。
答案 6 :(得分:0)
请注意:可以在数千甚至数百万用户之间共享IP地址!例如,由于AOL的网络架构,大多数/所有AOL用户都显示为一小组IP地址。大多数ISP将其大型用户群映射到一小组公共IP地址。
您不能假设IP地址只属于一个用户。
您不能假设单个用户只使用一个IP地址。
答案 7 :(得分:0)
检查以下问题讨论针对分布式强力攻击和字典攻击的最佳做法: