• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    asp.net 獲取IP的相關資料

    來源:懂視網 責編:小采 時間:2020-11-27 22:43:51
    文檔

    asp.net 獲取IP的相關資料

    asp.net 獲取IP的相關資料:ASP.net 獲得客戶端的IP,最常見的是使用下述代碼: 代碼如下:string user_IP = System.Web.HttpContext.Current.Request.ServerVariables[REMOTE_ADDR]; 對于了解代理服務器情況的人,我們會知道,如果用戶使用了代理服務器,上述代碼獲得的是代理
    推薦度:
    導讀asp.net 獲取IP的相關資料:ASP.net 獲得客戶端的IP,最常見的是使用下述代碼: 代碼如下:string user_IP = System.Web.HttpContext.Current.Request.ServerVariables[REMOTE_ADDR]; 對于了解代理服務器情況的人,我們會知道,如果用戶使用了代理服務器,上述代碼獲得的是代理

    ASP.net 獲得客戶端的IP,最常見的是使用下述代碼:
    代碼如下:

    string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

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

    REMOTE_ADDR 說明:

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

    如何繞過代理服務器獲得用戶真實的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

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

    HTTP_X_FORWARDED_FOR

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

    需要注意的,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
    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 來說,可以分以下五種情況:

    一、沒有使用代理服務器的情況:

    REMOTE_ADDR = 您的 IP
    HTTP_VIA = 沒數值或不顯示
    HTTP_X_FORWARDED_FOR = 沒數值或不顯示

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

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

    這類代理服務器還是將您的信息轉發給您的訪問對象,無法達到隱藏真實身份的目的。

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

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

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

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

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

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

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

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

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

    服務器端的 UserIP.ASPX 頁面的代碼:
    代碼如下:


    protected void Page_Load(object sender, EventArgs e){
    StringBuilder info = new StringBuilder(); // 我們關注的三個 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();
    }
    客戶端發送請求的代碼:
    [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();
    }

    測試的結果中的重要信息:測試的結果數據比較多,我這里只羅列了幾個重要的。

    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 />

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

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

    REMOTE_ADDR、VIA、X_FORWARDED_FOR
    實際在服務器段,這三個值應該通過下面三個屬性來讀取

    HTTP_REMOTE_ADDR、HTTP_VIA 、HTTP_X_FORWARDED_FOR 注意他們的區別!!

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

    小結:

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

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    asp.net 獲取IP的相關資料

    asp.net 獲取IP的相關資料:ASP.net 獲得客戶端的IP,最常見的是使用下述代碼: 代碼如下:string user_IP = System.Web.HttpContext.Current.Request.ServerVariables[REMOTE_ADDR]; 對于了解代理服務器情況的人,我們會知道,如果用戶使用了代理服務器,上述代碼獲得的是代理
    推薦度:
    標簽: IP地址 ip 取得
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 免费看一级毛片在线观看精品视频 | 国产精品久久久天天影视香蕉 | 久久九九久精品国产| 91视频国产精品| 亚洲国产精品无码专区| 久久99精品九九九久久婷婷| 国产精品视频网| 成人区精品一区二区不卡| 亚洲欧美精品AAAAAA片| 久久国产午夜精品一区二区三区 | 久久久久久噜噜精品免费直播| 99精品国产福利在线观看| 华人亚洲欧美精品国产| 高清免费久久午夜精品| 8AV国产精品爽爽ⅴa在线观看| 久久久久亚洲精品无码蜜桃| 在线精品视频一区二区| 午夜精品久久久久久| 免费精品精品国产欧美在线| 久久精品18| 精品第一国产综合精品蜜芽| 国产vA免费精品高清在线观看| 亚洲精品高清视频| 四虎成人欧美精品在永久在线| 久久亚洲国产欧洲精品一| 久久精品国产99国产精品澳门 | 国精品午夜福利视频不卡| 久久精品麻豆日日躁夜夜躁| 无码人妻精品一区二区三18禁| 亚洲热线99精品视频| 伊人久久精品无码二区麻豆| 日韩精品一区二区午夜成人版| 日本精品视频在线观看| 手机日韩精品视频在线看网站| 婷婷成人国产精品| 亚洲午夜国产精品无码老牛影视| 一本大道无码日韩精品影视| 亚洲欧美日韩精品久久亚洲区| 亚洲视频在线精品| 亚洲精品V欧洲精品V日韩精品| 亚洲精品少妇30p|