【问题标题】:How to secure an open REST API from abuse in Node.js?如何保护开放的 REST API 免受 Node.js 中的滥用?
【发布时间】:2017-08-02 13:40:05
【问题描述】:

例如,我有一个用 Node.js 编写的 REST api 端点。非技术用户可以从网页访问,也可以使用 curl 命令通过命令行访问。它不需要任何凭据即可访问它,因为它旨在对任何人开放以访问它。我要解决的问题是如何防止有人恶意访问这个 REST API 端点,例如一遍又一遍地 ping 这个 api 端点,或者如何防止 ddos​​ 攻击。

不需要编程问题,如果有更好的地方可以问这个问题,请告诉我。

【问题讨论】:

    标签: node.js rest http ddos


    【解决方案1】:

    如果不使用 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) => {});
    

    【讨论】:

      【解决方案2】:

      你说你希望它是开放的,但你又说你希望它是开放的!

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

      Pinging 和 DOS 攻击是不同的,因此与您的 API 无关。除非您的信息有价值/极具竞争力,否则像 IP 禁令这样简单的事情将大有帮助。

      【讨论】:

        【解决方案3】:

        设置速率限制,如果您不能对其进行身份验证。

        如果您使用的是快递https://www.npmjs.com/package/express-rate-limit,则可以使用它

        【讨论】:

          猜你喜欢
          • 2022-01-21
          • 2011-12-03
          • 2012-11-18
          • 1970-01-01
          • 2015-02-03
          • 1970-01-01
          • 2023-02-01
          • 2014-09-13
          • 2016-01-05
          相关资源
          最近更新 更多