乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       posondlq 2013-05-02

       

      在WEB開發(fā)中.我們可能都習(xí)慣使用下面的代碼來獲取客戶端的IP地址:
       -----------------C#代碼----------------------------------------------------------------------
      //優(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地址!!

      下面是測(cè)試代碼:
      --------------C#代碼---------------------------------------------------------------------------
      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"文件代碼:
      ------------C#代碼-----------------------------------------------------------------------------
      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)測(cè)試代碼中去訪問ip.aspx文件時(shí)."string IP = stream.ReadToEnd();"這段代碼取到的IP數(shù)據(jù)就是"0.0.0.0"!!!!(呵.在真實(shí)情況下.這樣的IP地址肯定不是我們想要的結(jié)果.而在有些投票系統(tǒng)中限制一個(gè)IP只能投1次票時(shí),如果也是用類似的代碼取得對(duì)方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ì)代理情況.你的建議又是怎樣呢???

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多