【问题标题】:prevent brute force attack by blocking IP address通过阻止 IP 地址来防止暴力攻击
【发布时间】:2012-03-05 01:27:13
【问题描述】:

我正在建立一个用户输入促销代码的网站。没有用户身份验证,但我想防止有人通过蛮力输入促销代码。我不允许使用验证码,所以正在考虑使用 IP 地址阻止过程。如果用户输入促销代码的尝试失败 X 次,该网站将阻止用户的 IP 地址 X 时间。

在实施这样的事情时有什么明显的问题吗?

【问题讨论】:

  • 你知道netscape上有一个插件可以在每次页面加载时伪造ip。
  • 网站只是提示输入促销代码而没有任何其他信息,还是就像购物车一样,您正在经历一个向导过程,而促销代码是该过程中的字段之一?
  • 是的,它只是促销代码的一个字段形式,没有任何其他信息

标签: asp.net security


【解决方案1】:

我认为没有一种解决方案可以解决您的所有问题,但如果您想减缓暴力攻击,只需在页面加载中添加几百毫秒的延迟就可以了!

您还可以强制他们首先访问您输入代码的页面,在那里您可以添加一个带有值的隐藏字段并将相同的值存储在会话中,当用户验证您比较隐藏字段的代码时会话值。

通过这种方式,您可以强制攻击者发出两个请求,而不仅仅是一个请求,您还可以测量这两个请求之间的时间,如果它低于设定的时间量,您可以或多或少地保证它是一个机器人。

【讨论】:

    【解决方案2】:

    -如果它没有链接到商店,请不要考虑这个-

    是否考虑过在您的订单上放置隐藏标签?不是 100% 万无一失,但它会阻止一些蛮力。

    您只需检查隐藏标签是否会弹出大量促销代码,您会阻止订单。

    我仍然会建议您设置某种登录方式。

    【讨论】:

      【解决方案3】:

      阻止 IP 地址是一个坏主意,因为该 IP 地址可能是公司 http 代理服务器的地址。 大多数公司/机构使用网关连接到互联网。在这种情况下,您看到的 IP 地址是网关的 IP 地址,后面可能有 N 个用户。如果您因为该网络中的一个用户造成的滋扰而阻止此 IP 地址,基于 IP 的阻止也会使您的站点对其他 N 个用户不可用。在单个路由器后面对多台计算机进行 NAT 的情况下,情况确实如此。

      场景 2:假设同一网络中的 X 个用户在您的 Y 分钟限制内无意中提供了不正确的代码,该怎么办。该网络中的所有用户再次被阻止输入更多代码。

      您可以使用基于 cookie 的系统,将过去 Y 分钟内的尝试次数存储在 cookie 中(或服务器端的会话变量中)并每次验证它。但是,这也不是万无一失的,因为知道您的实现的用户也可以绕过它。

      【讨论】:

      • 在这种情况下使用 cookie 是个坏主意,请尝试使用 session AND 真实性令牌。
      【解决方案4】:

      如果您使用的是 IIS 7,那么实际上有一个扩展程序可以帮助您准确地完成您正在谈论的事情。

      http://www.iis.net/download/DynamicIPRestrictions

      这可以避免您尝试通过代码来实现它。至于任何“明显的问题”,这类事情一直都是为了防止对 Web 应用程序的暴力攻击。我想不出为什么真正的用户需要尝试以与发出蛮力攻击的计算机相同的方式输入代码。测试所有可能的用户体验有望帮助您解决可能出现的任何问题。

      【讨论】:

      • 不幸的是,我无法访问该站点的 Web 服务器,并且我不想阻止用户进入该站点或页面。只需要阻止输入促销代码。即如果他们尝试输入一个验证错误,例如“抱歉,您目前无法再输入任何促销代码。请稍后再试”
      • 寻找IP地址?攻击者可以使用公共代理服务器列表轻松进行欺骗和迭代。这个扩展没用。
      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      相关资源
      最近更新 更多