2017-02-22 62 views
0

我的情况很简单:如何在NodeJS中识别来自同一个源的两个请求?

我需要一个应用层解决方案来识别并应用来自同一来源的请求的某种规则。

如果一个男人会要求我的服务器从邮差,或从浏览器或卷曲我要找出这个人,然后做这个东西的信息。

在我的特殊情况下,我想加入黑名单的人会是谁攻击我的服务器的某个时候。

Node/Express中可能吗?

+0

你是如何定义出处? IP地址?请参阅:http://stackoverflow.com/questions/12349251/restrict-access-to-node-js-based-http-server-by-ip-address – vossad01

回答

4

没有自带的Web请求,告诉你的用户是谁请求背后,不管请求是如何发起的超级标识符(浏览器,卷曲,邮差,Node.js的应用程序,PHP应用程序等。 ..)。

这个问题在新的Web开发人员中很常见。最终它归结为两点:

  1. 需要用户有一个帐户,登录到该帐户,以使用您的服务,需要与每一个使用该服务的登录凭据,然后跟踪他们的使用情况看看它是否符合你的使用指南。如果没有,您可以禁止该帐户。

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

浏览器提供了一个cookie,因此您可以尝试通过浏览器cookie识别重复用户。但是,这可以通过清除cookie来打败。虽然Cookie是按浏览器的,但无法将多个设备上的同一用户或多个浏览器中的同一用户与简单的Cookie关联起来。

除了源IP地址,cURL和Postman默认不提供任何标识信息。您可以尝试追踪IP地址,但是仅依赖IP地址存在一些问题,因为公司用户可能正在通过代理,这使得它们看起来都来自相同的IP地址。如果你禁止一个用户进行不当行为,那可能会影响其他无辜的用户。

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

一步比这还涉及一个帐户是如何创建的,因为你不想施虐者仅仅能够运行一个脚本每隔10分钟自动创建一个新帐户。也有各种各样的方案来保护这一点。最常见的是只需要一些证据证明人员参与创建新帐户(验证码,问题/答案等),这会阻止自动创建帐户。其他支票可能需要有效的信用卡,唯一的电子邮件地址验证等...

+0

好吧,我现在看到了整个问题。我们正在考虑会话/令牌,但尚未实现。我得到一个关于代理的问题。所以你告诉我,禁止知识产权会阻止一大群无辜的用户要求我们的东西正确吗?但这不仅是由于代理,对吧?我的意思是,至少在我的国家(我认为其他任何工作都是一样的),一群亲密的互联网用户会得到相同的公共IP地址,即他们所连接的路由器/交换机。这在地理上是相关的,但也是一个问题,对吗?不仅代理(在ip禁令方面) –

+1

@VictorFerreira - 是的,在多个用户之间共享IP地址的任何情况都可能导致仅基于IP地址进行跟踪的问题。公司代理仅仅是一个例子,但足以让你需要避免它。 – jfriend00

相关问题