Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
更新時間:2013年06月28日 16:34:50 作者:
如果某個網站是通過下面的代碼獲取IP,那么我們只要在Header里隨意設置HTTP_VIA和X_FORWARDED_FOR,就可以達到偽造IP的目的
在網卡隨便一搜: Asp.net 客戶端IP
可以搜索到很多頁面,提供的代碼基本都類似于:
if (Request.ServerVariables["HTTP_VIA"] != null)
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
else
return Request.ServerVariables["REMOTE_ADDR"];
上述代碼里的HTTP_VIA和HTTP_X_FORWARDED_FOR,都是從客戶端提交的Header里獲取的,而在正常的HTTP交互中,REMOTE_ADDR是無法偽造的(注),
所以如果某個網站是通過上面的代碼獲取IP,那么我們只要在Header里隨意設置HTTP_VIA和X_FORWARDED_FOR,就可以達到偽造IP的目的,可以使用FireFox的插件“Modify Headers”來測試,用它添加Header
注:實際上,REMOTE_ADDR也是可以偽造的,但是會造成無法正常接收數據,好比寫信時,發(fā)件人寫假地址,那當然不可能收到對方的回復了
可以搜索到很多頁面,提供的代碼基本都類似于:
復制代碼 代碼如下:
if (Request.ServerVariables["HTTP_VIA"] != null)
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
else
return Request.ServerVariables["REMOTE_ADDR"];
上述代碼里的HTTP_VIA和HTTP_X_FORWARDED_FOR,都是從客戶端提交的Header里獲取的,而在正常的HTTP交互中,REMOTE_ADDR是無法偽造的(注),
所以如果某個網站是通過上面的代碼獲取IP,那么我們只要在Header里隨意設置HTTP_VIA和X_FORWARDED_FOR,就可以達到偽造IP的目的,可以使用FireFox的插件“Modify Headers”來測試,用它添加Header
注:實際上,REMOTE_ADDR也是可以偽造的,但是會造成無法正常接收數據,好比寫信時,發(fā)件人寫假地址,那當然不可能收到對方的回復了
相關文章
.Net筆記:System.IO之windows文件操作的深入分析
本篇文章是對.Net中windows文件操作的使用進行了詳細的分析介紹,需要的朋友參考下2013-05-05
ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因
在web開發(fā)中Cookie是必不可少的,.NET自然也有一個強大的Cookie操作類,我們用起來也非常方便,不過在使用中我們會發(fā)現一個事情Response.Cookies.Remove刪除不了Cookie,2013-06-06

