//優先取得代理IP string IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(IP)) { //沒有代理IP則直接取連接客戶端IP IP = Request.ServerVariables["REMOTE_ADDR"]; }
Response.Clear(); //優先取得代理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數據就是"0.0.0.0"!!!!(呵.在真實情況下.這樣的IP地址肯定不是我們想要的結果.而在有些投票系統中限制一個IP只能投1次票時,如果也是用類似的代碼取得對方IP然后再判斷的話.呵呵.限制就失效咯)...
或者如果你用上面代碼獲取IP地址后后面又不再進行數據判斷的話也許還能更進一步進行數據破壞!! 比如你用類似上面的代碼中獲取IP地址就直接有這樣的SQL語句: string sql = "INSERT INTO (IP) VALUE ('" + IP + "')"; 那么也許破壞者還可以進行SQL注入進行數據破壞!!