2017-06-29 31 views
0

在我的应用程序中,我添加了reCaptcha,但我也想要第二种方法来防止暴力攻击。经过一番研究后,我想在一个解决方案中,如果试图在一秒钟内完成,将阻止试图登录的用户。例如,用户进入页面并放置他们的凭据,然后按回车尝试登录;如果这发生在一秒钟内,我会阻止用户,因为这不是人为可能的(即使他们的凭据保存在浏览器中)。蛮力安全 - 登录时间

但是,那么问题是,我正在计算页面加载完成后JavaScript层的时间,所以这个解决方案显然很容易被黑客攻击。我认为使用数据库,但这似乎是不可靠的(由于请求)。那么,在这种情况下我能做些什么来实现最佳解决方案呢?

+0

我会同时使用客户端和服务器端阻塞。客户端例如是我禁用登录按钮或什么,并提醒用户发生了什么事。在服务器端,它也是必需的,因为正如你所提到的,客户端验证可能会被黑客入侵。在这些情况下,时间不是关键因素,所以在我看来,请求时间并不重要。此外,如果来自同一个ip的请求太多,可能是洪水攻击,所以你可以在一段时间后拒绝这些请求(例如,在1分钟内10次失败的验证码) – Ursache

回答

0

这听起来像你想“扼杀”多快的登录尝试。这可以通过服务器生成的某种类型的“令牌”来实现

  • 当页面请求生成令牌时,存储时间。
  • 将令牌发送到登录页面。
  • 当登录请求返回时,请确保它具有令牌。
  • 将登录请求的时间与令牌生成时间进行比较,如果过早拒绝以您认为合适的方式拒绝请求。
  • 存储每个登录尝试,如果它们发送得太近,拒绝它们。