2012-01-31 61 views
-2

如果IP地址可能通過創建錯誤或操縱的http頭來欺騙,因此不應該依賴它來驗證我們的PHP/ASP頁面中的傳入請求,服務器如何處理這些請求並依靠它?例如,拒絕IP或允許IP都基於IP。如果IP地址可能被欺騙,那麼

服務器是否可以獲得IP信息一些其他(和更可靠)的方式比說PHP/ASP通過服務器變量?

+0

@ChrisLively在這種情況下,恥於我跳到結論。 *壞康拉德* – 2012-01-31 02:12:04

+0

@Chris Ahh,好的。沒有那麼有意義,那麼,就像漠不關心。 – 2012-01-31 03:06:23

+0

[應用程序安全問題:它是多麼容易僞造一個IP地址?](http://stackoverflow.com/questions/6081839/application-security-concerns-how-easy-is-it-to-假的IP地址) – CodesInChaos 2012-01-31 18:09:16

回答

2

IP地址不能被欺騙。該地址是服務器發送答覆所必需的。

PHP從服務器獲取其$ _SERVER全局IP地址(因此爲變量名!),它決定了協議棧中較低層的地址。

編輯:

sarnold使得一個好點的是,在理論上,可以腐敗的路由表,誤導流量。 (的確,我相信幾年前在亞洲的一級路由器中發生過這樣的事件)。因此,我應該澄清一下,我的評論「IP地址不能被欺騙」非常適合指出服務器變量將會始終忠實地反映目的地IP。服務器邊界之外的事情完全是另一回事。

+0

順便說一句,接受箭頭上方的「上」和「下」箭頭是什麼? – 2012-01-31 15:13:59

+0

它們是允許他人上/下投票響應的按鈕。原始問題同上。 – 2012-01-31 17:20:41

5

由於設置TCP會話需要three-way handshake,服務器通常願意依靠連接的IP地址進行低風險流量。只有數據包中的IP地址可路由某些機器準備好處理連接時,此握手才能成功。流氓路由器可能僞造IP地址,但總的來說,僞造連接遠離路由器的任一端點更加困難,因此大多數人都準備依靠它來進行低風險使用。 (DNS欺騙更有可能的方式來歪曲連接端點,例如。)

高風險用戶必須使用更多的東西一樣TLSIPsec,或CIPSO(罕見)來驗證連接端點,或建立用戶身份驗證到較低層以驗證特定連接(OpenSSH)。

但是TCP會話的實際內容可以是任何事情和一切 - 而且服務器不應該依賴TCP會話的內容(如HTTP頭)來忠實地報告IP地址或其他任何重要事項。

+0

+1,供您進行更詳細的分析。 – 2012-01-31 02:16:54

+0

因此,當http請求進來時,你是否說服務器有不同的方法來檢查IP是什麼?我認爲當時所有的服務器都是http頭 - 我們知道這很容易被欺騙。請澄清... – 2012-01-31 15:02:57

+0

等一下...等一下......我只是意識到,我在腦海中混淆了引用者的ip ...我在過去看到的代碼示例/代碼片段都修改了頭文件使用PHP。 (http://www.mustap.com/phpzone_post_62_how-to-bypass-the-referer-se)。由於我也讀過IP也可能不可靠,所以我認爲IP可以通過修改PHP中的標頭來以相同的方式進行欺騙。我只是意識到這是不可能的。感謝康拉德,明確表示無法打開我的眼睛。所以,僞造IP仍然是可能的,但並不像PHP那樣容易。 – 2012-01-31 15:12:27