例如,我有一个用Node.js编写的REST API端点。它可以从非技术用户的网页访问,也可以使用curl命令通过命令行访问。它不需要任何凭据来访问它,因为它打算让任何人访问它。我试图解决的问题是,如何防止某人恶意访问此REST API端点,例如反复ping此api端点,或者如何防止ddos攻击。如何在Node.js中保护开放的REST API免受滥用?
没有必要编程的问题,让我知道是否有更好的地方来问这个问题。
例如,我有一个用Node.js编写的REST API端点。它可以从非技术用户的网页访问,也可以使用curl命令通过命令行访问。它不需要任何凭据来访问它,因为它打算让任何人访问它。我试图解决的问题是,如何防止某人恶意访问此REST API端点,例如反复ping此api端点,或者如何防止ddos攻击。如何在Node.js中保护开放的REST API免受滥用?
没有必要编程的问题,让我知道是否有更好的地方来问这个问题。
防止DDOS是不是没有使用像CloudFlare的解决方案,易于使用。
为了确保您的REST API,你可以使用middleware
如果使用express
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) => {});
你说你希望它是开放的,但是你说你想让它变得开放!
限制/授权令牌。至少选择一个,前两者。
Ping和DOS攻击是不同的,并且与您的API没有任何关系。除非你的信息是有价值的/极具竞争力的,否则像IP禁止这样简单的事情将会有很长的路要走。
设置费率限制如果你不能有一个auth它。
你可以,如果你使用的是快递https://www.npmjs.com/package/express-rate-limit