繁体   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