伪造IP的失败尝试
2013-03-06 22:06
766 查看
在我的一个系统中记录到的访客IP出现了10.0.0.1这样的IP,印象中这是一个私有IP才对,于是对获取IP的代码又琢磨了一阵。
首先看下获取IP的代码
首先疑问ServerVariables集合是什么东西?W3C School解释为:用于取回服务器变量值的集合。很奇怪,访客IP这样的信息为什么要保存在一个服务器变量集合中。
HttpWebRequest类可以自定义设置请求头信息,我们尝试修改这些信息,看是否能成功。
很不幸这种方式失败了,得到的IP仍是本机IP。后来在网上看到有人尝试用另外一种方式设置HTTP_VIA
可能Add是自定义头信息用的,Set是系统头信息使用的吧。这样改后输出IP为0.0.0.0。如此,网上限制IP的系统岂不是都简单破解?
为了能证明自己,把URL换成ip138(http://iframe.ip138.com/ic.asp)测试,结果返回的仍是真实IP。
初步推断,HTTP_VIA这个头信息经过一次网络转发后会改变一次,因为我本机测试所以会出现0.0.0.0的情况。
所以上面判断访客IP的代码应该是正确的,那系统里的10.0.0.1是怎么出现的呢?
首先看下获取IP的代码
string userIP = string.Empty; if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null) { userIP = HttpContext.Current.Request.UserHostAddress; } else { userIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; } Response.Write(userIP);
首先疑问ServerVariables集合是什么东西?W3C School解释为:用于取回服务器变量值的集合。很奇怪,访客IP这样的信息为什么要保存在一个服务器变量集合中。
HttpWebRequest类可以自定义设置请求头信息,我们尝试修改这些信息,看是否能成功。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:4866/WebForm.aspx"); request.Headers.Add("X_FORWARDED_FOR", "0.0.0.0"); request.Headers.Add("HTTP_VIA", "0000"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader stream = new StreamReader(response.GetResponseStream(),Encoding.Default); string IP = stream.ReadToEnd(); stream.Close(); response.Close(); request = null;
很不幸这种方式失败了,得到的IP仍是本机IP。后来在网上看到有人尝试用另外一种方式设置HTTP_VIA
request.Headers.Set(HttpRequestHeader.Via,"00000");
可能Add是自定义头信息用的,Set是系统头信息使用的吧。这样改后输出IP为0.0.0.0。如此,网上限制IP的系统岂不是都简单破解?
为了能证明自己,把URL换成ip138(http://iframe.ip138.com/ic.asp)测试,结果返回的仍是真实IP。
初步推断,HTTP_VIA这个头信息经过一次网络转发后会改变一次,因为我本机测试所以会出现0.0.0.0的情况。
所以上面判断访客IP的代码应该是正确的,那系统里的10.0.0.1是怎么出现的呢?
相关文章推荐
- 读取系统"安全"日志中的失败登录尝试 + 添加攻击者IP到防火墙策略
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
- linux查看某IP尝试连接成功和失败次数
- 将ssh失败尝试达到100次以上的IP拒绝掉
- 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证
- 查看日志里root用户登录失败的ip尝试的次数
- 收集尝试登录到服务器的密码尝试失败的ip和次数
- OpenCV 3.1下载 ippicv_linux_20151201失败
- ssm连接sqlserver时通过端口1433连接到主机的TCP/IP失败,错误“Connection refused:connect……
- 如何在不重装服务器的情况下尝试解决sqlmaint.exe失败的问题
- 尝试缓冲区溢出--失败
- 支付宝SDK唤起H5页面支付第一次成功,之后再尝试失败问题
- Java连接SQLServer 2005 TCP/IP 连接失败
- php curl 伪造IP来源的实例代码
- fstream的使用和打开时存在中文中文路径可能失败的问题,其他中文问题都可以尝试采用如下方法
- tomcat访问127.0.0.1:8080和本地ip访问失败
- [浪风推荐的]CURL伪造IP和来源
- JDBC连接错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。。。
- linux 配置静态IP 弹出eth0 失败
- Linux 启动时 正在决定 eth0 的 IP 信息失败后不能上网的解决方法