如果我將這兩者都放到數據庫中,是否足以防止網站訪問者欺騙他們來自不同的IP地址?防止IP欺騙
$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip2 = $_SERVER['REMOTE_ADDR'];
如果我將這兩者都放到數據庫中,是否足以防止網站訪問者欺騙他們來自不同的IP地址?防止IP欺騙
$ip1 = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip2 = $_SERVER['REMOTE_ADDR'];
簡答題 - 沒有。你永遠不能保證知識產權與人之間的聯繫。對於幾乎所有的實際用途而言,是的,這足夠好。
除非你真的希望有人爲了隱藏自己的知識產權而花費大量時間,否則你應該沒問題。
這真的取決於你想要做的是否足夠好。
編輯:剛剛看到您對第一篇文章的評論。一個選擇是看Evercookies - 他們是非常侵入性和不道德的,但他們確實做得很好,所以這是你的呼叫。
沒有,很容易欺騙X-FORWARDED-FOR
,這是字面上發送作爲標題。嘗試建立一個帳戶系統或讓它依賴於電子郵件或其他東西。你不能單獨信任IP。
鑑於您的上述評論,$_SERVER['REMOTE_ADDR']
很可能就足夠了,因爲他們每次想要執行該操作時都必須更改IP,這將涉及代理或最有可能的Tor。
不,您只能避免使用某些代理服務器。
還有選項,使您可以 「隱藏」 你的真實IP(很多人喜歡他們的隱私),如:
IP日誌只是再次幫助你某種用戶的反正(其中許多人都使用動態IP從他們提供池中,以便沒有法院命令你永遠不會知道那是誰,並禁止很多人跟他/她),但與管理與150臺機器可用...
當任何用戶訪問您的網站與代理服務器在這種情況下,兩個值都不同。您可以使用HTTP_X_FORWARDED_FOR服務器變量獲得IP地址。因此, HTTP_X_FORWARDED_FOR'由代理服務器發佈,其描述客戶端IP,而'REMOTE_ADDR'描述代理服務器的IP。
當任何用戶在沒有任何代理服務器的情況下訪問您的站點時,您可以使用REMOTE_ADDR服務器變量獲取IP地址。所以在這種情況下,HTTP_X_FORWARDED_FOR和HTTP_VIA將不可用。
HTTP_X_FORWARDED_FOR
是一個HTTP標頭,因此很容易被欺騙。 REMOTE_ADDR
是CGI規範中規定的Web服務器提供的環境變量。它不容易被欺騙。因此,緩存任何一個都沒有真正的意義。
如果有人使用受損代理服務器欺騙HTTP_X_FORWARDED_FOR
標頭,那麼您可以做的事情不多。
但是,應該更容易相信非代理請求沒有被欺騙,因爲除非攻擊者在同一個子網上,否則他們僅限於盲目欺騙攻擊,這要求他們猜測序列並確認TCP連接的號碼。這在現代網絡上很難做到。即使他們設法做到了這一點,他們也無法收到路由到欺騙IP的任何數據,所以很容易篩選出任何盲目的欺騙攻擊。
這些天來,真的不可能(沒有什麼是不可能的,但它確實需要非常具體的情況並且應用程序有限),以便某人實際使用欺騙性IP與Web服務器建立匿名TCP連接。大多數數據包欺騙用於DDoS和洪水攻擊。
_spoofing_是什麼意思? '$ _SERVER ['REMOTE_ADDR']'會向您顯示遠程端點的IP地址,這在連接中很難欺騙,但更容易欺騙更接近連接的任何端點 - 但程序開啓該主機可能會惡意冒充您的某個用戶。你真的想要測量或防止什麼? – sarnold 2012-02-10 00:31:08
@sarnold我想從一個給定的IP地址每5分鐘只允許一次動作。這個想法是,一個人只能每5分鐘做一次動作,而不是每分鐘不停地點擊數百次。 – John 2012-02-10 00:34:18