在节点中,如果我使用axios之类的库和简单的异步脚本,则可以向任何Web服务器发送无限制的发布请求。如果我知道该URL所需的所有参数,标头和cookie,我将获得成功响应。
此外,任何人都可以使用Postman轻松提出这些请求。
我已经在节点服务器中使用CORS阻止来自不同来源的请求,但这仅适用于在浏览器中触发请求的其他网站。
我想知道是否有可能使用express在节点服务器中完全阻止来自外部源(手动创建的脚本,邮递员,LOIC之类的软件等)的请求。
谢谢!
答案 0 :(得分:1)
我想知道是否有可能使用express在节点服务器中完全阻止来自外部源(手动创建的脚本,邮递员,LOIC之类的软件等)的请求。
否,这是不可能的。可以使来自邮递员的格式正确的请求或在node.js中用axios编码的请求看起来完全像来自浏览器的请求。您的服务器不知道有什么区别。
API的通常方案是您需要某种开发人员凭证才能使用您的API。您将服务条款应用于该凭证,以描述允许或不允许使用您的API的开发人员。
然后,您可以通过编程方式监控使用情况,并放慢速度或禁止使用根据您的条款滥用API的任何凭据(这就是Google处理其API的方式)。您还可以实施速率限制和其他服务器保护,以使失控的开发人员帐户不会损害您的服务。您甚至可能将反复滥用您服务的IP地址列入黑名单。
对于您希望自己的网页使用(进行Ajax调用)的API,没有真正的方法可以阻止其他人以编程方式使用这些相同的API。您可以监视它们的使用情况,并尝试检测与您自己的网页不符的使用情况。在某些方案中,您需要在网页中放置一个唯一的,短期使用的令牌,并要求您的网页在API的每个请求中都包含该令牌。通过一些努力,聪明的开发人员可以解决该问题,方法是定期将令牌从您的网页上抓取,然后以编程方式使用它,直到令牌到期为止。但是,这对于API小偷来说是一个额外的障碍。
一旦确定了滥用者,就可以阻止其IP地址。如果它们恰好位于较大的网络(例如,大学)上,则其公共IP地址可能会通过NAT由许多人共享,并且您最终可能会阻止比您想要的用户更多的用户-这仅仅是阻止IP地址的结果可能会被许多用户共享。