2017-08-02 76 views
0

例如,我有一个用Node.js编写的REST API端点。它可以从非技术用户的网页访问,也可以使用curl命令通过命令行访问。它不需要任何凭据来访问它,因为它打算让任何人访问它。我试图解决的问题是,如何防止某人恶意访问此REST API端点,例如反复ping此api端点,或者如何防止ddos攻击。如何在Node.js中保护开放的REST API免受滥用?

没有必要编程的问题,让我知道是否有更好的地方来问这个问题。

回答

1

防止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) => {}); 
1

你说你希望它是开放的,但是你说你想让它变得开放!

限制/授权令牌。至少选择一个,前两者。

Ping和DOS攻击是不同的,并且与您的API没有任何关系。除非你的信息是有价值的/极具竞争力的,否则像IP禁止这样简单的事情将会有很长的路要走。