增加登录时间延迟停止强制执行,好主意?

gan*_*jan 13 php passwords sleep brute-force password-protection

我已经设置了我的数据库来记录每次失败的登录尝试.我以为我会将失败的尝试次数乘以0.05秒或者其他东西.就像是:

            time_nanosleep(0, (50000000 * $failed_attempts ) ); 
Run Code Online (Sandbox Code Playgroud)

黑客用来猜测密码的更多尝试,每次检查需要更多时间.检查100张密码后,他必须在每次尝试之间等待5秒.

这是阻止暴力破坏的好方法吗?我通过IP识别用户.所以我猜你可以通过使用多个代理服务器或其他东西来强制执行应用程序,但除此之外,我认为这是一个好主意.你们有什么感想?

Gre*_*ler 9

怎么样的:

time_nanosleep(0, (10000000000 * (log($failed_attempts)^10)) ); 
Run Code Online (Sandbox Code Playgroud)

这将为您提供指数级增加的尝试窗口.


Bre*_*iar 6

我看到的第一个问题是你正在处理一个机器人,它不关心响应之间是否存在延迟.除非您采取措施限制此操作,否则您将耗尽系统资源并可能导致延迟很长时间.只是在5次尝试失败后禁止IP.如果您担心禁止真实用户,这可能是暂时的禁令.

  • 我不确定Friar究竟是什么,但这引出了一个有趣的想法.而不是睡觉,为什么不拒绝用户指数增长的时间段?也就是说,在一次失败之后,拒绝来自该IP的任何进一步登录尝试,例如1秒.下一次失败2秒.等等.对于输错密码的人类用户,他可能甚至都不会注意到:他需要花费几秒钟的时间来检查密码并重新输入密码.但对于机器人来说,他会失败,因为他可能不知道如何解释. (3认同)