欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用HTTP_X_FORWARDED_FOR獲取客戶端IP的嚴重后果

 更新時間:2009年11月30日 19:17:53   作者:  
我的建議是不要再使用上面的方法去獲取客戶端IP.即是不要再理會代理情況.
在WEB開發(fā)中.我們可能都習慣使用下面的代碼來獲取客戶端的IP地址:
C#代碼
復制代碼 代碼如下:

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

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

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"文件代碼:
復制代碼 代碼如下:

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();

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

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

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

最后,我的建議是不要再使用上面的方法去獲取客戶端IP.即是不要再理會代理情況.你的建議又是怎樣呢???

相關文章

  • 調(diào)用無文檔說明的?Web?API過程描述

    調(diào)用無文檔說明的?Web?API過程描述

    這篇文章主要為大家介紹了調(diào)用無文檔說明的Web?API過程描述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2022-03-03
  • Postman全局注冊方法及對返回數(shù)據(jù)可視化處理

    Postman全局注冊方法及對返回數(shù)據(jù)可視化處理

    這篇文章主要為大家介紹了Postman全局注冊方法及對返回數(shù)據(jù)可視化處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Git回退代碼到某次commit的實現(xiàn)方法

    Git回退代碼到某次commit的實現(xiàn)方法

    這篇文章主要介紹了Git回退代碼到某次commit的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • git設置忽略文件.gitignore的方法

    git設置忽略文件.gitignore的方法

    這篇文章主要介紹了git設置忽略文件.gitignore的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • chatGPT使用及注冊過程中常見的一些錯誤解決方法(所有報錯匯總)

    chatGPT使用及注冊過程中常見的一些錯誤解決方法(所有報錯匯總)

    這篇文章主要介紹了chatGPT注冊報錯及使用過程中報錯匯總及解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • spark大數(shù)據(jù)任務提交參數(shù)的優(yōu)化記錄分析

    spark大數(shù)據(jù)任務提交參數(shù)的優(yōu)化記錄分析

    這篇文章主要介紹了spark大數(shù)據(jù)任務提交參數(shù)的優(yōu)化記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • git 拉取遠程分支到本地的方法步驟

    git 拉取遠程分支到本地的方法步驟

    這篇文章主要介紹了git 拉取遠程分支到本地的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • idea2020.1 常用設置圖文詳解

    idea2020.1 常用設置圖文詳解

    這篇文章主要介紹了idea2020.1 常用設置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • VsCode中ctrl+s后會在當前目錄下自動生成dist目錄的方法

    VsCode中ctrl+s后會在當前目錄下自動生成dist目錄的方法

    這篇文章主要介紹了VsCode中ctrl+s后會在當前目錄下自動生成dist目錄,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 目標檢測mAP的概念及公式詳解

    目標檢測mAP的概念及公式詳解

    這篇文章主要為大家介紹了我們在進行目標檢測時需要用到的mAP概念及公式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論