如何使用Express.js将API访问限制为仅授权域?

问题描述 投票:7回答:1

我正在为我的Node.jsExpress.js应用程序做一层安全保护,我想限制对一个叫 authlist (授权列表)的域名。

恰恰相反 authlist 是一个 denylist.

概述。

  • 用户创建一个 Project 在我的系统上。
  • 每个 Project 是发出的 Public KeySecret Key 将被用于创建签名请求。
  • 此外,任何给定的 Project 将需要提供 authlist 的域,他们希望能够访问该给定的API。Project. 这是在基于Web的控制台中完成的,而不是作为每个请求的一部分。
  • 当API收到一个请求时。req.get('origin') 用于确定请求的源域。
  • 源域是根据 authlist 并据此允许或拒绝。

在代码中:

var app = require('express');

app.post('/my-api-endpoint', function(req,res) {

    var originDomain = req.get('origin');   /// e.g. mysite.com
    /// Origin is then checked against the authlist array of domains

});

问题

  • 对于域名起源欺骗,我需要注意哪些问题?
  • 这到底是一个值得信赖的安全功能?还是说很容易被欺骗,没必要去管?
javascript node.js api express cross-domain
1个回答
0
投票

实现你所寻找的目标的最好方法是完全忘记域名,并选择性地允许IP范围的白名单。说到这里,世界上一些最大的API甚至没有使用这个安全层(即eBay,亚马逊的市场,等等......)。

不过为了解决额外的偏执,你可以让你的客户设置子网来启动他们的自动缩放服务器,这将给他们一个静态的IP范围,以白名单。然后只有在这个IP范围内的服务器才有权限访问你的端点。

下面是AWS上的一个问题,对这个问题做了更多的解释。https:/forums.aws.amazon.comthread.jspa?threadID=233469。

© www.soinside.com 2019 - 2024. All rights reserved.