




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
客户端ip:Request.ServerVariables.Get(Remote_Addr).ToString();客户端主机名:Request.ServerVariables.Get(Remote_Host).ToString();客户端浏览器IE:Request.Browser.Browser;客户端浏览器 版本号:Request.Browser.MajorVersion;/客户端操作系统:Request.Browser.Platform;服务器ip:Request.ServerVariables.Get(Local_Addr).ToString();服务器名:Request.ServerVariables.Get(Server_Name).ToString();如果你想进一步了解ServerVariables,可以用 foreach(String o in Request.ServerVariables) Response.Write(o+=+Request.ServerVariableso+); 对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。REMOTE_ADDR 说明:访问客户端的 IP 地址。 此项信息用户不可以修改。如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。另: Request.UserHostAddress 和 Request.ServerVariablesREMOTE_ADDR 实际是同一个值。如何绕过代理服务器获得用户真实的IP地址呢? 这时候我们一般是类似如下的代码(这里我简单起见,没有作一些边界判断)private static string getIp()if (System.Web.HttpContext.Current.Request.ServerVariablesHTTP_VIA != null)return System.Web.HttpContext.Current.Request.ServerVariablesHTTP_X_FORWARDED_FOR.Split(new char,)0;elsereturn System.Web.HttpContext.Current.Request.ServerVariablesREMOTE_ADDR;这样就足够了么? 这样是有问题的,HTTP_X_FORWARDED_FOR 、HTTP_VIA 是可以被冒名的。如果正好这里有SQL注入问题的话,那可非常严重了。下面我们就来具体看HTTP_VIA 和HTTP_X_FORWARDED_FOR 这两个 ServerVariables。HTTP_VIA如果有该条信息, 就证明您使用了代理服务器,代理服务器的地址就是后面的数值。HTTP_X_FORWARDED_FOR如果有该条信息, 也证明了您使用了代理服务器代理服务器的地址就是后面的数值。需要注意的,HTTP_X_FORWARDED_FOR 的值,并不一定是只有一个IP地址,下面的信息也是可能的,每行一条记录。下面数据取材于CSDN 实际的数据。1unknown, unknown, 063, 63, 1510, 96, 3, 1, 1, unknown7, unknown, unknown, 9511, 68, 64unknown, 06, 3376, 1unknown, 818, 348, 467, unknown需要注意的是这两个值都是可以被改掉的。对于这三个值:REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR 来说,可以分以下五种情况:一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示二、使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 最后一个代理服务器 IP HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:63, 63, 15。 这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。三、使用普通匿名代理服务器的情况:Anonymous Proxies REMOTE_ADDR = 最后一个代理服务器 IP HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:63, 63, 15。 隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。四、使用欺骗性代理服务器的情况:Distorting Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:63, 63, 15。 告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies) REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:63, 63, 15。 完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。下面是一个简单的代码,来演示冒名上述信息,博客的测试代码。服务器端的 UserIP.ASPX 页面的代码:protected void Page_Load(object sender, EventArgs e)StringBuilder info = new StringBuilder();/ 我们关注的三个 ServerVariablesinfo.AppendFormat(HTTP_VIA = 0 rn, Request.ServerVariablesHTTP_VIA);info.AppendFormat(HTTP_X_FORWARDED_FOR = 0 rn, Request.ServerVariablesHTTP_X_FORWARDED_FOR);info.AppendFormat(REMOTE_ADDR = 0 rn, Request.ServerVariablesREMOTE_ADDR);info.AppendLine(* rn);/ 其他有参考价值的 ServerVariablesforeach (string key in Request.ServerVariables.AllKeys)info.AppendFormat(0 = 1 rn, key, Request.ServerVariableskey);Response.Clear();Response.Write(info.ToString();Response.End();客户端发送请求的代码:static void Main(string args)HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(http:/localhost:7867/MyTestWebSite/UserIP.aspx);request.Headers.Add(REMOTE_ADDR, 8);request.Headers.Add(VIA, ghj1976);request.Headers.Add(X_FORWARDED_FOR, );HttpWebResponse response = (HttpWebResponse)request.GetResponse();StreamReader stream = new StreamReader(response.GetResponseStream();string info = stream.ReadToEnd();stream.Close();response.Close();request = null;Console.Write(info);Console.ReadLine();测试的结果中的重要信息:测试的结果数据比较多,我这里只罗列了几个重要的。HTTP_VIA = ghj1976 HTTP_X_FORWARDED_FOR = REMOTE_ADDR = *REMOTE_ADDR = HTTP_VIA = ghj1976 HTTP_REMOTE_ADDR = 8 HTTP_X_FORWARDED_FOR = 上面测试代码需要注意的是:我们在客户端代码中设置了三个HTTP头信息,分别是:REMOTE_ADDR、VIA、X_FORWARDED_FOR实际在服务器段,这三个值应该通过下面三个属性来读取HTTP_REMOTE_ADDR、HTTP_VIA 、HTTP_X_FORWARDED_FOR 注意他们的区别!REMOTE_ADDR 属性是无法设置的。或者说,设置的不是我们所希望的。小结:1、REMOTE_ADDR 不可被修改,但是可能会获得代理服务器的IP,而不是实际
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- IT技术支持问题反馈及解决方案模板
- 营销团队销售业绩分析工具实时数据追踪与评估
- 合规经营区域扩大承诺书3篇
- 哔哩哔哩外科护理学题库及答案
- 大师语录考试题及答案
- 童话中的勇敢冒险故事14篇范文
- 童话小屋的故事作文15篇
- 企业合同审查与签订指南手册
- 生产流程监控与效率分析工具
- 医疗器械质量安全培训课件
- 2025年少先队大队委笔试试卷及答案
- 员工年度考核证明
- GB/T 7123.2-2002胶粘剂贮存期的测定
- GA/T 383-2014法庭科学DNA实验室检验规范
- 学生课程免考(修)申请表(模板)
- 横河DCS-培训讲义课件
- 电子课件-《可编程序控制器及其应用(三菱-第三版)》-A04-1724-课题一-可编程序控制器基础知识
- 实验计划样表
- 三阶魔方入门教程课件
- 计算机组装与维护完整版课件(全)
- 健康疗休养基本服务承诺书
评论
0/150
提交评论