天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

asp.net 獲取IP的相關(guān)資料

ASP.NET 獲得客戶端的IP,最常見的是使用下述代碼:
復(fù)制代碼 代碼如下:
string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

對于了解代理服務(wù)器情況的人,我們會知道,如果用戶使用了代理服務(wù)器,上述代碼獲得的是代理服務(wù)器的IP地址;如果用戶使用了多個代理服務(wù)器,則是到達服務(wù)器的最后一個代理服務(wù)器的IP地址。

REMOTE_ADDR 說明:

訪問客戶端的 IP 地址。
此項信息用戶不可以修改。
如果真的給改了的話,你也和服務(wù)器連接不了了,服務(wù)器就是按照這個來與客戶端建立連接并進行通訊的。實際我測試修改這個 ServerVariables , 一點效果都沒有。仍然獲得是實際的值。
另: Request.UserHostAddress 和 Request.ServerVariables["REMOTE_ADDR"] 實際是同一個值。

如何繞過代理服務(wù)器獲得用戶真實的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];
else
return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
這樣就足夠了么? 這樣是有問題的,HTTP_X_FORWARDED_FOR 、HTTP_VIA 是可以被冒名的。如果正好這里有SQL注入問題的話,那可非常嚴重了。

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

HTTP_VIA

如果有該條信息, 就證明您使用了代理服務(wù)器,代理服務(wù)器的地址就是后面的數(shù)值。

HTTP_X_FORWARDED_FOR

如果有該條信息, 也證明了您使用了代理服務(wù)器代理服務(wù)器的地址就是后面的數(shù)值。

需要注意的,HTTP_X_FORWARDED_FOR 的值,并不一定是只有一個IP地址,下面的信息也是可能的,每行一條記錄。下面數(shù)據(jù)取材于CSDN 實際的數(shù)據(jù)。
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
192.168.83.56, 210.21.224.233
218.94.136.176, 203.81.21.61
unknown, 210.75.1.181
10.161.196.218, 202.104.134.23
222.216.6.148, 222.216.6.146
155.161.59.47, unknown


需要注意的是這兩個值都是可以被改掉的。

對于這三個值:REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR 來說,可以分以下五種情況:

一、沒有使用代理服務(wù)器的情況:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 沒數(shù)值或不顯示
HTTP_X_FORWARDED_FOR = 沒數(shù)值或不顯示

二、使用透明代理服務(wù)器的情況:Transparent Proxies

REMOTE_ADDR = 最后一個代理服務(wù)器 IP
HTTP_VIA = 代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 您的真實 IP ,經(jīng)過多個代理服務(wù)器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

這類代理服務(wù)器還是將您的信息轉(zhuǎn)發(fā)給您的訪問對象,無法達到隱藏真實身份的目的。

三、使用普通匿名代理服務(wù)器的情況:Anonymous Proxies

REMOTE_ADDR = 最后一個代理服務(wù)器 IP
HTTP_VIA = 代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 代理服務(wù)器 IP ,經(jīng)過多個代理服務(wù)器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隱藏了您的真實IP,但是向訪問對象透露了您是使用代理服務(wù)器訪問他們的。

四、使用欺騙性代理服務(wù)器的情況:Distorting Proxies

REMOTE_ADDR = 代理服務(wù)器 IP
HTTP_VIA = 代理服務(wù)器 IP
HTTP_X_FORWARDED_FOR = 隨機的 IP ,經(jīng)過多個代理服務(wù)器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告訴了訪問對象您使用了代理服務(wù)器,但編造了一個虛假的隨機IP代替您的真實IP欺騙它。

五、使用高匿名代理服務(wù)器的情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務(wù)器 IP
HTTP_VIA = 沒數(shù)值或不顯示
HTTP_X_FORWARDED_FOR = 沒數(shù)值或不顯示 ,經(jīng)過多個代理服務(wù)器時,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服務(wù)器的信息替代了您的所有信息,就象您就是完全使用那臺代理服務(wù)器直接訪問對象。

服務(wù)器端的 UserIP.ASPX 頁面的代碼:
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e){
StringBuilder info = new StringBuilder(); // 我們關(guān)注的三個 ServerVariables
info.AppendFormat("HTTP_VIA = {0} <br />/r/n",
Request.ServerVariables["HTTP_VIA"]);
info.AppendFormat("HTTP_X_FORWARDED_FOR = {0} <br />/r/n",
Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
info.AppendFormat("REMOTE_ADDR = {0} <br />/r/n",
Request.ServerVariables["REMOTE_ADDR"]);
info.AppendLine("*********** /r/n<br />");
// 其他有參考價值的 ServerVariables
foreach (string key in Request.ServerVariables.AllKeys){
info.AppendFormat("{0} = {1} <br />/r/n", key, Request.ServerVariables[key]);
}
Response.Clear();
Response.Write(info.ToString());
Response.End();
}
客戶端發(fā)送請求的代碼:
[code]
static void Main(string[] args){
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:7867/MyTestWebSite/UserIP.ASPx");
request.Headers.Add("REMOTE_ADDR", "192.168.5.88");
request.Headers.Add("VIA", "ghj1976");
request.Headers.Add("X_FORWARDED_FOR", "0.0.0.0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string info = stream.ReadToEnd();
stream.Close();
response.Close();
request = null;
Console.Write(info);
Console.ReadLine();
}

測試的結(jié)果中的重要信息:測試的結(jié)果數(shù)據(jù)比較多,我這里只羅列了幾個重要的。

HTTP_VIA = ghj1976 <br />
HTTP_X_FORWARDED_FOR = 0.0.0.0 <br />
REMOTE_ADDR = 127.0.0.1 <br />
***********
REMOTE_ADDR = 127.0.0.1 <br />
HTTP_VIA = ghj1976 <br />
HTTP_REMOTE_ADDR = 192.168.5.88 <br />
HTTP_X_FORWARDED_FOR = 0.0.0.0 <br />

上面測試代碼需要注意的是:

我們在客戶端代碼中設(shè)置了三個HTTP頭信息,分別是:

REMOTE_ADDR、VIA、X_FORWARDED_FOR
實際在服務(wù)器段,這三個值應(yīng)該通過下面三個屬性來讀取

HTTP_REMOTE_ADDR、HTTP_VIA 、HTTP_X_FORWARDED_FOR 注意他們的區(qū)別!!

REMOTE_ADDR 屬性是無法設(shè)置的。或者說,設(shè)置的不是我們所希望的。

小結(jié):

1、REMOTE_ADDR 不可被修改,但是可能會獲得代理服務(wù)器的IP,而不是實際客戶端的IP。
2、通過 HTTP_VIA、HTTP_X_FORWARDED_FOR 我們可以獲得代理服務(wù)器所代理的信息,但是這依靠代理服務(wù)器的支持。另外,這兩個值可以被修改。我們通過它獲得的信息可能是不真實的。另,HTTP_X_FORWARDED_FOR 的信息可能是一個集合,不含 REMOTE_ADDR 中的代理服務(wù)器IP。
沒有一個完美的解決獲得客戶端IP地址的方法,我們只能在上面2個信息中取舍。

AspNet技術(shù)asp.net 獲取IP的相關(guān)資料,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产高清美女一级a毛片久久w | 欧美高清xxx| 微拍秒拍99福利精品小视频 | 美女漏bb | 伊人久久综合谁合综合久久 | 国产亚洲中文字幕视频 | 亚洲视频精品 | 無码一区中文字幕少妇熟女H | 娇妻归来在线观看免费完整版电影 | 欧洲精品一区二区不卡观看 | 国产中文在线 | 最新亚洲人成网站在线影院 | 免费特黄一区二区三区视频一 | 精品亚洲麻豆1区2区3区 | 国产产一区二区三区久久毛片国语 | 国产全部视频列表支持手机 | 小处雏一区二区三区 | 521人成a天堂v | 夜夜穞狠狠穞 | 日韩欧美视频一区二区在线观看 | 久久艹影院 | 黑人巨摘花破女处 | qvod 电影 | 美女禁处受辱漫画 | 亚洲福利精品电影在线观看 | 99re.05久久热最新地址 | 成人小视频免费在线观看 | 老司机亚洲精品影院在线观看 | 国产浮力草草影院CCYY | www.精品久久 | 捆绑调教网站 | 国产日韩在线欧美视频 | 成 人 动漫3d 在线看 | 男人J桶女人P视频无遮挡网站 | 老鸭窝毛片| 天天爽夜夜爽8888视频精品 | JAPANRCEP老熟妇乱子伦视频 | 吉吉影音先锋av资源 | np高h肉文 | 97精品视频 | 欲奴第一季在线观看全集 |