Node.js Nodejs Express,如何在调用我的API时对我网站的每个用户进行分级限制?

Node.js Nodejs Express,如何在调用我的API时对我网站的每个用户进行分级限制?,node.js,express,Node.js,Express,我已经安装,只有我的网站被列入白名单,这有多可靠?如果不在我的网站上调用api,坏演员还能调用我的api吗 接下来,我想对我网站上的每个用户进行评级限制(用户未注册或登录) 我想限制每个用户每秒发出的请求不超过1个 如何识别每个用户?那么如何限制每个用户呢?这里有太多单独的问题。我将解决我能解决的问题: 我安装了cors,只有我的网站被列入了白名单,这有多可靠?如果不在我的网站上调用api,坏演员还能调用我的api吗 CORS仅适用于合作客户。这意味着浏览器。您的API可以被其他任何人与脚本工具

我已经安装,只有我的网站被列入白名单,这有多可靠?如果不在我的网站上调用api,坏演员还能调用我的api吗

接下来,我想对我网站上的每个用户进行评级限制(用户未注册或登录)

我想限制每个用户每秒发出的请求不超过1个


如何识别每个用户?那么如何限制每个用户呢?

这里有太多单独的问题。我将解决我能解决的问题:

我安装了cors,只有我的网站被列入了白名单,这有多可靠?如果不在我的网站上调用api,坏演员还能调用我的api吗

CORS仅适用于合作客户。这意味着浏览器。您的API可以被其他任何人与脚本工具或任何编程语言,甚至像CURL这样的工具一起使用。因此,CORS根本不能阻止坏演员。它唯一阻止的是人们在自己的网页Javascript中嵌入对API的调用。它不会阻止任何人从他们想要的任何工具以编程方式访问API。而且,他们甚至可以通过代理在自己的网站上使用您的API。这不是什么保护措施

如何识别每个用户?那么如何限制每个用户呢

当每个请求都有身份验证凭据时,速率限制最有效,因为它允许您唯一地标识每个请求和/或禁止或延迟凭据
那是一种不端行为。如果没有凭据,您可以尝试使用cookie来跟踪给定的用户,但cookie可以被阻止或丢弃,即使在浏览器中也可以这样做。因此,如果没有任何身份验证凭据,您只能使用请求的IP地址。对于某些用户(如家庭用户),这可能就足够了。但是,对于公司用户来说,很多很多用户可能会以相同的公司IP地址出现(由于他们的NAT或代理的工作方式),因此您不能仅仅通过IP地址来区分大公司中的一个用户和另一个用户。如果您有一家公司的许多用户同时使用该网站,您可能会错误地触发速率限制。

您还可以检查,您的请求是ajax还是没有使用太多打包在一起的问题。