我正在为我的Node.jsExpress.js应用程序做一层安全保护,我想限制对一个叫 authlist
(授权列表)的域名。
注 恰恰相反
authlist
是一个denylist
.
概述。
Project
在我的系统上。Project
是发出的 Public Key
和 Secret Key
将被用于创建签名请求。Project
将需要提供 authlist
的域,他们希望能够访问该给定的API。Project
. 这是在基于Web的控制台中完成的,而不是作为每个请求的一部分。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
});
问题
实现你所寻找的目标的最好方法是完全忘记域名,并选择性地允许IP范围的白名单。说到这里,世界上一些最大的API甚至没有使用这个安全层(即eBay,亚马逊的市场,等等......)。
不过为了解决额外的偏执,你可以让你的客户设置子网来启动他们的自动缩放服务器,这将给他们一个静态的IP范围,以白名单。然后只有在这个IP范围内的服务器才有权限访问你的端点。
下面是AWS上的一个问题,对这个问题做了更多的解释。https:/forums.aws.amazon.comthread.jspa?threadID=233469。