2

我想防止机器人入侵受密码保护的弱帐户。(例如,这发生在 ebay 和其他大型网站上)

因此,我将使用 ip、尝试次数和上次尝试的时间戳(memcache-fall-out)设置一个(mem-)缓存值。

但是机器人试图用一个密码打开任何账户呢?例如,机器人尝试使用密码“password123”的所有 500.000 个用户帐户。也许10会打开。

所以我的尝试是用try缓存ip并将max-tries设置为~50。我会在成功登录后删除它。因此,好的机器人每 49 次尝试重置锁定,就会使用有效帐户登录。

有什么办法可以做到吗?大平台对此做了什么?我能做些什么来防止白痴通过重试 50 次来阻止代理上的所有用户?

如果没有最佳实践——这是否意味着任何平台都是暴力破解的?至少提示何时重置计数器?

4

8 回答 8

6

我认为您可以将您的解决方案与验证码混合使用:

  1. 计算每个 IP 的尝试次数
  2. 如果在给定时间内来自给定 IP 地址的尝试次数过多,请在您的登录表单中添加验证码。
于 2009-01-19T14:29:48.537 回答
5

有些网站在开始让您输入验证码和用户名/密码之前,可能会给您两到三次尝试。一旦您成功登录,验证码就会消失。

于 2009-01-19T14:27:53.160 回答
3

前几天有一篇关于Coding Horror的比较不错的文章。

于 2009-01-19T14:27:38.603 回答
2

虽然代码专注于 Django,但Simon Willison 的博客上对最佳实践方法进行了一些非常好的讨论。他使用 memcached 来跟踪 IP 和登录失败。

于 2009-01-19T14:30:12.793 回答
1

当用户设置密码时,您可以使用密码强度检查器来确保他们没有使用容易暴力破解的密码。

编辑:为了清楚起见,这不应被视为您要解决的问题的完整解决方案,而应与其他一些答案一起考虑。

于 2009-01-19T14:30:40.610 回答
0

您永远无法阻止一组机器人从许多不同的 IP 地址尝试此操作。

来自同一个 IP 地址:我会说,如果您看到“可疑”行为的示例(无效的用户名,或多个有效帐户尝试不正确的登录),只需阻止登录几秒钟即可。如果是合法用户,他们不会介意等待几秒钟。如果它是一个机器人,这将使它们减慢到不切实际的程度。如果您继续看到来自 IP 地址的行为,只需阻止它们 - 但为合法用户留下一个带外门(拨打电话 #x,或通过电子邮件发送此地址)。

于 2009-01-19T14:31:02.170 回答
0

请注意: IP 地址可以在数千甚至数百万用户之间共享!!!例如,由于 AOL 的网络架构,大多数/所有 AOL 用户都显示为一组非常小的 IP 地址。大多数 ISP 将其庞大的用户群映射到一小组公共 IP 地址。

您不能假设一个 IP 地址只属于一个用户。

您不能假设单个用户将只使用单个 IP 地址。

于 2009-01-19T20:37:24.973 回答
0

检查以下问题,讨论针对分布式暴力和字典攻击的最佳实践:

最好的分布式蛮力对策是什么?

于 2009-01-30T06:41:56.120 回答