簡體   English   中英

如何在Node.js中保護開放的REST API免受濫用?

[英]How to secure an open REST API from abuse in Node.js?

例如,我有一個用Node.js編寫的REST api端點。 可以從非技術用戶的網頁訪問它,也可以使用curl命令通過命令行訪問它。 它不需要任何憑據來訪問它,因為它是打開任何人訪問它。 我試圖解決的問題是如何防止有人惡意訪問此REST API端點,例如一遍又一遍地ping這個api端點,或者如何防止ddos攻擊。

沒有必要編程問題,請告訴我是否有更好的地方可以提出這個問題。

你說你希望它是開放的,但是你說你希望它有點開放!

限制/授權令牌。 選擇至少一個,首選兩者。

Ping和DOS攻擊是不同的,與您的API無關。 除非您的信息具有價值/競爭力,否則像IP禁止這樣簡單的事情將會有很長的路要走。

設置速率限制,如果您不能使用身份驗證。

如果您使用快速https://www.npmjs.com/package/express-rate-limit,則可以使用此功能

如果不使用CloudFlare等解決方案,預防DDOS並非易事。

要保護您的REST api,如果您使用express ,則可以使用middleware

const checkAuth = (req, res, next) => {
   // logic for checking auth
   if (authorized) {
    return next();
   }
   res.status(401).send('NEED AUTH');
 };
 router.post('/login', checkAuth, (req, res, next) => {
   // actual logic for login
 });

更新:關於@Akarsh的答案,您可以在實際邏輯之前使用多個中間件。 例如,一個用於驗證,一個用於速率限制

router.post('/logic', checkAuth, rateLimit, (req, res, next) => {});

暫無
暫無

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

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