主頁 > 知識庫 > 使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴(yán)重后果

使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴(yán)重后果

熱門標(biāo)簽:忻州外呼系統(tǒng)接口對接 湖北穩(wěn)定外呼系統(tǒng) 電銷機(jī)器人怎么收費(fèi) 滄州智能外呼系統(tǒng)收費(fèi) 洛陽便宜外呼系統(tǒng)廠家 嘟聲的電銷機(jī)器人 語音平臺系統(tǒng) 醫(yī)院地圖標(biāo)注 地圖標(biāo)注和圖片標(biāo)注
在WEB開發(fā)中.我們可能都習(xí)慣使用下面的代碼來獲取客戶端的IP地址:
C#代碼
復(fù)制代碼 代碼如下:

//優(yōu)先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP)) {
//沒有代理IP則直接取連接客戶端IP
IP = Request.ServerVariables["REMOTE_ADDR"];
}

上面代碼看來起是正常的.可惜這里卻隱藏了一個(gè)隱患!!因?yàn)?HTTP_X_FORWARDED_FOR"這個(gè)值是通過獲取HTTP頭的"X_FORWARDED_FOR"屬性取得.所以這里就提供給惡意破壞者一個(gè)辦法:可以偽造IP地址!!
下面是測試代碼:
復(fù)制代碼 代碼如下:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/ip.aspx");
request.Headers.Add("X_FORWARDED_FOR", "0.0.0.0");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader stream = new StreamReader(response.GetResponseStream());
string IP = stream.ReadToEnd();
stream.Close();
response.Close();
request = null;

"ip.aspx"文件代碼:
復(fù)制代碼 代碼如下:

Response.Clear();
//優(yōu)先取得代理IP
string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(IP))
{
//沒有代理IP則直接取客戶端IP
IP = Request.ServerVariables["REMOTE_ADDR"];
}
Response.Write(IP);
Response.End();

這樣.當(dāng)測試代碼中去訪問ip.aspx文件時(shí)."string IP = stream.ReadToEnd();"這段代碼取到的IP數(shù)據(jù)就是"0.0.0.0"!!!!(呵.在真實(shí)情況下.這樣的IP地址肯定不是我們想要的結(jié)果.而在有些投票系統(tǒng)中限制一個(gè)IP只能投1次票時(shí),如果也是用類似的代碼取得對方IP然后再判斷的話.呵呵.限制就失效咯)...

或者如果你用上面代碼獲取IP地址后后面又不再進(jìn)行數(shù)據(jù)判斷的話也許還能更進(jìn)一步進(jìn)行數(shù)據(jù)破壞!!
比如你用類似上面的代碼中獲取IP地址就直接有這樣的SQL語句:
string sql = "INSERT INTO (IP) VALUE ('" + IP + "')";
那么也許破壞者還可以進(jìn)行SQL注入進(jìn)行數(shù)據(jù)破壞!!

這樣看來利用"HTTP_X_FORWARDED_FOR"這個(gè)屬性獲取客戶端IP的方法就不再可取了.-_-# 但如果不用這種方法.那么那些真正使用了代理服務(wù)器的人.我們又不能再獲取到他們的真實(shí)IP地址(因?yàn)槟承┐矸?wù)器會(huì)在"X_FORWARDED_FOR"這個(gè)HTTP頭里加上訪問用戶真正的IP地址).呵.現(xiàn)實(shí)就是這樣,某種東西都有有得必有失...

最后,我的建議是不要再使用上面的方法去獲取客戶端IP.即是不要再理會(huì)代理情況.你的建議又是怎樣呢???
您可能感興趣的文章:
  • 獲取客戶端IP地址c#/vb.net各自實(shí)現(xiàn)代碼
  • ASP.NET獲取真正的客戶端IP地址的6種方法
  • Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討

標(biāo)簽:內(nèi)蒙古 日照 宜賓 96 山南 巴彥淖爾 定州 防城港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴(yán)重后果》,本文關(guān)鍵詞  使用,HTTP,FORWARDED,FOR,獲取,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴(yán)重后果》相關(guān)的同類信息!
  • 本頁收集關(guān)于使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴(yán)重后果的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章