2012-02-10 196 views
7

如果我將這兩者都放到數據庫中,是否足以防止網站訪問者欺騙他們來自不同的IP地址?防止IP欺騙

$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR']; 
$ip2 = $_SERVER['REMOTE_ADDR']; 
+3

_spoofing_是什麼意思? '$ _SERVER ['REMOTE_ADDR']'會向您顯示遠程端點的IP地址,這在連接中很難欺騙,但更容易欺騙更接近連接的任何端點 - 但程序開啓該主機可能會惡意冒充您的某個用戶。你真的想要測量或防止什麼? – sarnold 2012-02-10 00:31:08

+2

@sarnold我想從一個給定的IP地址每5分鐘只允許一次動作。這個想法是,一個人只能每5分鐘做一次動作,而不是每分鐘不停地點擊數百次。 – John 2012-02-10 00:34:18

回答

3

簡答題 - 沒有。你永遠不能保證知識產權與人之間的聯繫。對於幾乎所有的實際用途而言,是的,這足夠好。

除非你真的希望有人爲了隱藏自己的知識產權而花費大量時間,否則你應該沒問題。

這真的取決於你想要做的是否足夠好。

編輯:剛剛看到您對第一篇文章的評論。一個選擇是看Evercookies - 他們是非常侵入性和不道德的,但他們確實做得很好,所以這是你的呼叫。

+0

哦,evercookies看起來很酷,+1到亞 – Cyclone 2012-02-10 00:49:11

+0

就像我說的,不道德的地獄,但絕對很酷。我想知道SOPA的人們會怎樣看待他們:P – Joe 2012-02-10 00:50:27

+0

我從來沒有親自使用它,但是,這實際上非常整齊。我不認爲我已經完全意識到,到目前爲止,用戶的計算機上可以存儲多少種可識別信息的方式有多種。 – Cyclone 2012-02-10 00:52:47

1

沒有,很容易欺騙X-FORWARDED-FOR,這是字面上發送作爲標題。嘗試建立一個帳戶系統或讓它依賴於電子郵件或其他東西。你不能單獨信任IP。

鑑於您的上述評論,$_SERVER['REMOTE_ADDR']很可能就足夠了,因爲他們每次想要執行該操作時都必須更改IP,這將涉及代理或最有可能的Tor。

0

不,您只能避免使用某些代理服務器。

還有選項,使您可以 「隱藏」 你的真實IP(很多人喜歡他們的隱私),如:

IP日誌只是再次幫助你某種用戶的反正(其中許多人都使用動態IP從他們提供池中,以便沒有法院命令你永遠不會知道那是誰,並禁止很多人跟他/她),但與管理與150臺機器可用...

0

當任何用戶訪問您的網站與代理服務器在這種情況下,兩個值都不同。您可以使用HTTP_X_FORWARDED_FOR服務器變量獲得IP地址。因此, HTTP_X_FORWARDED_FOR'由代理服務器發佈,其描述客戶端IP,而'REMOTE_ADDR'描述代理服務器的IP。

當任何用戶在沒有任何代理服務器的情況下訪問您的站點時,您可以使用REMOTE_ADDR服務器變量獲取IP地址。所以在這種情況下,HTTP_X_FORWARDED_FOR和HTTP_VIA將不可用。

1

HTTP_X_FORWARDED_FOR是一個HTTP標頭,因此很容易被欺騙。 REMOTE_ADDR是CGI規範中規定的Web服務器提供的環境變量。它不容易被欺騙。因此,緩存任何一個都沒有真正的意義。

如果有人使用受損代理服務器欺騙HTTP_X_FORWARDED_FOR標頭,那麼您可以做的事情不多。

但是,應該更容易相信非代理請求沒有被欺騙,因爲除非攻擊者在同一個子網上,否則他們僅限於盲目欺騙攻擊,這要求他們猜測序列並確認TCP連接的號碼。這在現代網絡上很難做到。即使他們設法做到了這一點,他們也無法收到路由到欺騙IP的任何數據,所以很容易篩選出任何盲目的欺騙攻擊。

這些天來,真的不可能(沒有什麼是不可能的,但它確實需要非常具體的情況並且應用程序有限),以便某人實際使用欺騙性IP與Web服務器建立匿名TCP連接。大多數數據包欺騙用於DDoS和洪水攻擊。