日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

伪造IP的失败尝试

發布時間:2024/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 伪造IP的失败尝试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在我的一個系統中記錄到的訪客IP出現了10.0.0.1這樣的IP,印象中這是一個私有IP才對,于是對獲取IP的代碼又琢磨了一陣。

首先看下獲取IP的代碼

string userIP = string.Empty;if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null){userIP = HttpContext.Current.Request.UserHostAddress;}else{userIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];}
Response.Write(userIP);

首先疑問ServerVariables集合是什么東西?W3C School解釋為:用于取回服務器變量值的集合。很奇怪,訪客IP這樣的信息為什么要保存在一個服務器變量集合中。

HttpWebRequest類可以自定義設置請求頭信息,我們嘗試修改這些信息,看是否能成功。

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

很不幸這種方式失敗了,得到的IP仍是本機IP。后來在網上看到有人嘗試用另外一種方式設置HTTP_VIA

request.Headers.Set(HttpRequestHeader.Via,"00000");

可能Add是自定義頭信息用的,Set是系統頭信息使用的吧。這樣改后輸出IP為0.0.0.0。如此,網上限制IP的系統豈不是都簡單破解?

為了能證明自己,把URL換成ip138(http://iframe.ip138.com/ic.asp)測試,結果返回的仍是真實IP。

初步推斷,HTTP_VIA這個頭信息經過一次網絡轉發后會改變一次,因為我本機測試所以會出現0.0.0.0的情況。

所以上面判斷訪客IP的代碼應該是正確的,那系統里的10.0.0.1是怎么出現的呢?

轉載于:https://www.cnblogs.com/wzyl/archive/2013/03/06/2947037.html

總結

以上是生活随笔為你收集整理的伪造IP的失败尝试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。