我正在使用node.js、express和mongodb编写一个API,它将在另一台服务器中使用。我只希望该服务器(或将来的更多服务器)能够访问我的 API。我怎样才能做到这一点?
如果您只想根据另一台服务器的 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 http://expressjs.com/guide/behind-proxies.html).
该中间件将根据您的请求,根据传入请求的 IP 地址限制对您的 API 的访问。
然而,这相当脆弱,因为如果移动服务器会发生什么?您现在需要更新 API 应用程序以接受不同的 IP 地址。
我强烈鼓励您对 API 使用某种形式的身份验证(预共享密钥),而不是基于 IP 的过滤。您可以使用Passport http://passportjs.org/使用 Express 为您的 API 添加各种身份验证方案。
最后,无论哪种情况,如果您确实关心 API 的安全性,您可能应该确保您的 API 受到 TLS/SSL 加密的保护。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)