【问题标题】:How to stop outside Post requests如何停止外部 Post 请求
【发布时间】:2020-07-23 16:02:32
【问题描述】:

我制作了一个基本的游戏应用程序,在游戏结束时,游戏会发出一个 POST 请求并将用户名和分数发送到服务器。但这让我很容易受到游戏之外的 POST 请求的攻击,假设有人通过 Postman 发送它。

我可以有多种方法来解决这个问题吗?我是否需要开始学习会话/令牌,以便仅从浏览器窗口发出 POST 请求?

我是编码新手,我不完全确定我有哪些选择可以防御外部攻击。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您可以考虑使用 CSRF 令牌。

    通常使用这些令牌,以便必须从特定站点生成请求,而不能从另一个站点完成。

    https://developer.mozilla.org/en-US/docs/Glossary/CSRF

    What is a CSRF token ? What is its importance and how does it work?

    【讨论】:

      【解决方案2】:

      阻止过多帖子到您的服务器的最佳方法是安装 fail2ban 并将其配置为读取您的访问日志以禁止在 x 秒范围内发布超过 x 次的 ip(例如,禁止 ip 3 分钟内发帖超过 4 次)。

      failban 的作用是读取您的日志,并根据过滤器中的正则表达式来禁止 ip。

      不会发布如何安装它(周围有大量教程),但会在下面提供您需要的发布文件和配置:

      后过滤器文件。在我的示例中,它被命名为 post-ban.conf 并放置在 filter.d 文件夹中:

          [Definition]
      failregex = ^<HOST> -.*"POST .*".*$
      ignoreregex =
      

      jail.local 配置(在 fail2ban 的根文件夹中)您可以将其添加到现有过滤器数组中

          [post-ban]
      enabled   = true
      port      = http,https
      filter    = post-ban
      logpath  = %(nginx_access_log)s
      maxretry = 4
      findtime  = 180
      bantime = 60000
      

      这里的配置设置为180秒内第4个帖子封禁ip 60000秒。如果您没有运行 nginx,则必须更改日志路径

      【讨论】:

        猜你喜欢
        • 2016-11-18
        • 1970-01-01
        • 2018-08-11
        • 2017-08-29
        • 1970-01-01
        • 2015-10-16
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        相关资源
        最近更新 更多