0

假设您为您的 web 应用程序创建了一个密码重置系统。系统需要用户名或电子邮件才能将重置链接发送到帐户的电子邮件。

考虑这些相互矛盾的要求:

  • Cracker A 输入系统的表单潜在用户名(或电子邮件),以尝试发现系统中当前的匹配项。

理想情况下,系统既不确认也不否认现有用户名和电子邮件的存在,对任何一种情况都提供完全相同的反馈,以防止泄露匹配项。

  • 用户 B 尝试重置他们的密码,但拼写错误,或者更糟的是,错误记住了他们的用户名,以至于它与文件中的任何帐户都不匹配。因此,他们的重置请求将永远不会得到满足。

理想情况下,他们的错误会在他们请求重置后几秒钟内向他们清楚地表明,并带有友好的消息,例如“对不起,我们没有这样的用户名(或电子邮件)存档。您可以尝试检查您的拼写,或继续并创建一个新帐户。” 否则,他们可能会检查他们的电子邮件,一无所获,等待,一无所获,再次重置,一无所获,(因为没有可发送的匹配项)也许将他们的业务转移到其他地方?如果你幸运的话,打电话给客户服务?

有什么方法可以解决这些相互冲突的目标?

编辑:

考虑清楚问题后,我正在考虑解决问题的一种方法可能是仅使用电子邮件地址,如果系统中不存在该电子邮件,则发送“该帐户不存在,这是一个链接创建一个新帐户”到电子邮件而不是重置链接。

这样一来,用户总是会得到通知,而破解者只能将电子邮件发送到他们已经有权访问的帐户,这对他们没有用处。

说得通?这种方法有问题吗?

4

1 回答 1

1

用户 B 的可用性可能胜过 Cracker A 的安全风险,因此关键可能是限制 Cracker A 可以发现的内容。

处理 Cracker A 的一种方法是限制响应的速率。用户 B 将每 10 秒(比如说)从速度(错误)输入他们的姓名开始提交一个请求,并且会从同一个 IP 地址进行。Cracker A 将尝试在尽可能短的时间内提交尽可能多的请求,可能来自他指挥下的许多受感染 PC 的僵尸网络。如果您总是(至少)5 秒来响应请求,即使您的系统完全能够更快地管理请求,那么 Cracker A 也只能在合理的时间内搜索命名空间的有限部分。实际上实现这一点可能比我想象的要难。

您的系统可能需要了解攻击模式,如果存在广泛的攻击以获取响应,则应该增加响应时间。此类技术需要重置响应系统中的更多智能,以检测请求的来源和频率。您可能需要发现发送请求的 IP 地址中的错误模式。如果同一个地址发送了许多请求,特别是如果它在获得匹配(发送到给定电子邮件地址的响应)之后这样做,您就会对 IP 地址产生怀疑。

于 2011-07-25T14:54:31.023 回答