gpt4 book ai didi

node.js - NodeJS 中如何识别来自同一源的两个请求?

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:23 25 4
gpt4 key购买 nike

我的情况很简单:

我需要一个应用程序层解决方案来识别来自同一来源的请求,然后将某种规则应用于来自同一来源的请求。

如果有人从 Postman、浏览器或 cURL 请求我的服务器,我想识别这个人,然后用这些信息做一些事情。

在我的特殊情况下,我想将一个会在一段时间内攻击我的服务器的人列入黑名单。

在 Node/Express 中可以吗?

最佳答案

Web 请求中没有 uber 标识符来告诉您请求背后的用户是谁,无论请求是如何发起的(浏览器、cURL、Postman、node.js 应用程序、PHP 应用程序等)。

这个问题在新的 Web 开发人员中经常出现。最后归结为两件事:

  1. 要求用户拥有一个帐户,登录该帐户才能使用您的服务,每次使用该服务时都需要登录凭据,然后跟踪他们的使用情况以查看其是否符合您的使用指南。如果没有,您可以禁止该帐户。

  2. 通过帐户或 IP 地址或两者的某种组合来限制用户的速率。如果它们超过一定的速率限制,您可以减慢它们的速度或拒绝访问。

浏览器提供 cookie,以便您可以尝试通过浏览器 cookie 识别重复用户。但是,这可以通过清除 cookie 来解决。不过,Cookie 是针对每个浏览器的,因此您无法使用纯 Cookie 将跨多个设备或跨多个浏览器的同一用户关联起来。

默认情况下,cURL 和 Postman 不提供除原始 IP 地址之外的任何识别信息。您可以尝试跟踪 IP 地址,但仅依赖 IP 地址会出现一些问题,因为企业用户可能会通过代理,这使得它们看起来都来自同一 IP 地址。如果您因一名用户行为不当而禁止该用户,则可能会影响许多其他无辜用户。

如果你看看 Google、Facebook 等是如何做到这一点的,他们都要求你创建某种帐户,然后在每个请求中提供该帐户的凭据。这使他们能够跟踪您的使用情况并在需要时管理您的流量。而且,对于免费使用,它们通常都有速率限制,限制您进行 API 调用的频率。这可以防止任何单个用户使用超过适当份额的服务负载。而且,它允许他们检测和监管滥用系统的帐户。

比这更进一步的是如何创建帐户,因为您不希望滥用者每 10 分钟运行一次脚本来自动创建新帐户。也有多种方案可以保护这一点。最常见的是只需要一些证明有人参与创建新帐户(验证码、问题/答案等),这会阻止自动帐户创建。其他检查可能需要有效的信用卡、唯一的电子邮件地址验证等...

关于node.js - NodeJS 中如何识别来自同一源的两个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42381323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com