限制基于IP的登录尝试 - 好主意?

时间:2013-11-24 22:08:32

标签: security login passwords ip

我的客户有一个网站,您只需密码(无用户名)即可登录。没有用户,而是有一个用户类系统。所以admin类有一定的密码,编辑类不同的密码等。当你登录时,你的用户类是根据密码检测的。

我知道这看起来很不安全,但客户认为这很简单,他喜欢这样(我没有建立初始网站)

限制每个IP的登录尝试次数是个好主意,让我们说每小时5次?这会大大增加安全性吗?我相信攻击者很难一次又一次地获得新的IP

3 个答案:

答案 0 :(得分:1)

这不是一个好主意,攻击者改变它的IP非常简单,所以这不会给你额外的安全性。但是当你在一个公司网络后面时,所有的机器都会有相同的外部地址,所以在实践中你可能会遇到一些合法用户的问题。

提高安全性的最佳解决方案是创建某种白名单。

答案 1 :(得分:0)

限制每小时的登录尝试次数应该没有任何害处。它会使它更安全,但请记住,现在使用代理服务器使用不同的IP地址相当容易。

你也可以认为这是相反的。如果您的客户端始终使用相同的IP,则可以将IP白名单设置为黑名单。

答案 2 :(得分:0)

它会增加安全性,但不会像引入用户名参数那样多。攻击者的每次尝试都针对所有用户(类),每次都会大大增加猜测的可能性,而且您也无法知道哪些类是针对性的。

此外,您当前的方法禁止使用salted hashes,这可以提高安全性,因为系统中的每个密码都会以不同方式进行哈希处理。这是因为没有可用于选择适当盐的用户名记录,这本身会削弱安全性。

你应该做什么

您应该引入一个用户名字段 - 为了简单起见,这可能是该类的名称。

记录每次尝试的远程IP和用户名,您应该对来自同一IP地址或相同用户名的尝试次数进行评级。

如果从相同的IP或相同的用户名发生超过您设置的错误尝试阈值,那么您应该通过引入会阻碍攻击的人为延迟来限制响应。如果同时尝试从相同的IP或相同的用户名发生,则此延迟应跨越所有线程 - 这些请求应该以串行方式处理,因为这会减慢利用多个线程同时进行HTTP连接的暴力尝试。

你建议每小时限制5次只会让最随意的攻击者感到不安。正如其他答案所提到的那样,获得一个新IP对于一个坚定的攻击者来说将是一项微不足道的任务,并且需要的不仅仅是IP来正确保护您的系统并在任何时候将攻击范围缩小到单个资源(用户)