C#擷取用戶端IP地址

來源:互聯網
上載者:User

標籤:write   代碼   效果   foreach   資訊   伺服器ip   oca   []   tostring   

用戶端ip:
Request.ServerVariables.Get("Remote_Addr").ToString();
用戶端主機名稱:
Request.ServerVariables.Get("Remote_Host").ToString();
用戶端瀏覽器IE:
Request.Browser.Browser;
用戶端瀏覽器 版本號碼:
Request.Browser.MajorVersion;//
用戶端作業系統:
Request.Browser.Platform;

伺服器ip:
Request.ServerVariables.Get("Local_Addr").ToString();
伺服器名:
Request.ServerVariables.Get("Server_Name").ToString();

如果你想進一步瞭解ServerVariables,可以用
    foreach(String o in Request.ServerVariables){
     Response.Write(o+"="+Request.ServerVariables[o]+"<br>");
    }


對於瞭解Proxy 伺服器情況的人,我們會知道,如果使用者使用了Proxy 伺服器,上述代碼獲得的是Proxy 伺服器的IP地址;如果使用者使用了多個Proxy 伺服器,則是到達伺服器的最後一個Proxy 伺服器的IP地址。


REMOTE_ADDR 說明:

訪問用戶端的 IP 位址。
此項資訊使用者不可以修改。
如果真的給改了的話,你也和伺服器串連不了了,伺服器就是按照這個來與用戶端建立串連並進行通訊的。實際我測試修改這個 ServerVariables , 一點效果都沒有。仍然獲得是實際的值。
另: Request.UserHostAddress 和 Request.ServerVariables["REMOTE_ADDR"] 實際是同一個值。


如何繞過Proxy 伺服器獲得使用者真實的IP地址呢? 這時候我們一般是類似如下的代碼(這裡我簡單起見,沒有作一些邊界判斷)

private static string getIp(){if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[]{‘,‘})[0];elsereturn System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];}
這樣就足夠了嗎? 這樣是有問題的,HTTP_X_FORWARDED_FOR 、HTTP_VIA 是可以被冒名的。如果正好這裡有SQL注入問題的話,那可非常嚴重了。


下面我們就來具體看HTTP_VIA 和HTTP_X_FORWARDED_FOR 這兩個 ServerVariables。

HTTP_VIA

如果有該條資訊, 就證明您使用了Proxy 伺服器,Proxy 伺服器的地址就是後面的數值。

HTTP_X_FORWARDED_FOR

如果有該條資訊, 也證明了您使用了Proxy 伺服器Proxy 伺服器的地址就是後面的數值。

需要注意的,HTTP_X_FORWARDED_FOR 的值,並不一定是只有一個IP地址,下面的資訊也是可能的,每行一條記錄。下面資料取材於CSDN 實際的資料。
10.194.73.11
unknown, unknown, 211.100.22.30
203.98.182.163, 203.98.182.163, 203.129.72.215
172.16.20.110, 202.116.64.196, 203.81.21.61
10.194.75.83, 10.194.73.11, 10.194.73.11, unknown
192.168.120.57, unknown, unknown, 211.10.10.195
10.2.4.211, 219.141.250.3
3.242.165.168, 218.108.22.164
unknown, 211.100.22.30

C#擷取用戶端IP地址

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.