合理的退避算法?

时间:2013-01-16 17:25:17

标签: security

我想减慢攻击者的速度,这些攻击者会暴露我的应用程序泄漏帐户信息的部分内容。 (例如,如果您使用正在使用的用户ID访问注册页面,则页面响应会告诉您用户ID可以随后进行字典攻击。)

适当的算法使连续失败的尝试更慢更慢是什么?真实世界的例子是iPhone上的连续不良密码。

我正在用PHP实现,但任何伪代码响应都会受到赞赏。答案的关键部分是:

不好尝试N,将响应延迟X.

一个非常好的答案将包括:

M次尝试在我们对人为错误的容忍度范围内,因此曲线“曲棍球棒”接近M + 1

1 个答案:

答案 0 :(得分:0)

对于拥有常见名称的人来说,简单的几何感觉过于严苛。 (John Smith可能需要尝试几次才能找到未占用的用户ID。)

sleep(pow(2,$failed_attempts));

也许我选择了一个愚蠢的常数?