【问题标题】:How to allow a specific server to access my API?如何允许特定服务器访问我的 API?
【发布时间】:2015-10-19 22:44:03
【问题描述】:

我正在使用 node.js、express 和 mongodb 编写一个 API,它将用于另一台服务器。我只希望该服务器(或将来更多)能够访问我的 API。我该怎么做?

【问题讨论】:

    标签: node.js api server keystonejs


    【解决方案1】:

    在您的处理程序之前添加一个中间件并验证req.ip
    您可以使用选项来初始化中间件,以便可以配置 IP 列表。

    【讨论】:

      【解决方案2】:

      如果你只想根据其他服务器的IP进行限制,那么你可以定义一个快速中间件来检查每个传入的请求,如果IP不正确,则返回错误。

      一个例子可能如下所示:

      var app = express();
      app.use(function (req, res, next) {
        if (req.ip !== '1.2.3.4') { // Wrong IP address
          res.status(401);
          return res.send('Permission denied');
        }
        next(); // correct IP address, continue middleware chain
      });
      

      如果您的 API 位于一个或多个代理(或负载平衡器)之后,您可能应该启用“信任代理”选项 (http://expressjs.com/guide/behind-proxies.html)。

      此中间件将根据您的请求,根据传入请求的 IP 地址限制对您的 API 的访问。

      但是,这相当脆弱,因为如果您移动服务器会发生什么?您现在需要更新您的 API 应用程序以接受不同的 IP 地址。

      我强烈建议您对 API 使用某种形式的身份验证(预共享密钥),而不是基于 IP 的过滤。您可以使用 Passport 和 Express 为您的 API 添加各种身份验证方案。

      最后,无论哪种情况,如果您真的关心 API 的安全性,您可能应该确保您的 API 受到 TLS/SSL 加密的保护。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        • 2012-07-06
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        相关资源
        最近更新 更多