簡體   English   中英

如何允許特定服務器訪問我的API?

[英]How to allow a specific server to access my API?

我正在使用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 )。

根據您的請求,此中間件將根據傳入請求的IP地址限制對API的訪問。

但是,這是相當脆弱的,因為如果移動服務器會發生什么? 您現在需要更新API應用程序以接受其他IP地址。

我強烈建議您為API而不是基於IP的過濾使用某種形式的身份驗證(預共享密鑰)。 您可以使用Passport with Express為您的API添加各種身份驗證方案。

最后,在任何一種情況下,如果您真的關心API的安全性,您應該確保您的API受TLS / SSL加密保護。

在處理程序之前添加中間件並驗證req.ip
您可以使用選項初始化中間件,以便IP列表可配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM