2017-02-22 67 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

相關問題