asp.net中获得客户端的IP地址
来源:互联网 发布:华师网络教育远程教育 编辑:程序博客网 时间:2024/06/06 01:32
string ip =System.Web.HttpContext.Current.Request.UserHostAddress;
或
string ip =System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
REMOTE_ADDR 说明:
访问客户端的 IP 地址。
此项信息用户不可以修改。
如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。
但如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。
如何绕过代理服务器获得用户真实的IP地址呢?
private static string getIp() { if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) return System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0]; else return System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; }
Request.ServerVariables["HTTP_VIA"] ,ServerVariables["HTTP_X_FORWARDED_FOR"],Request.ServerVariables["REMOTE_ADDR"]
的值分下面几种情况:
一、没有使用代理服务器的情况:
REMOTE_ADDR = 用户的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 用户的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
三、使用普通匿名代理服务器的情况:Anonymous Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。
四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。
所以getIp()也不是最好的,因为可以编造一个假的IP,具体做法去看http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html
总结:
"Request.UserHostAddress"是可信的.但是这样的话却又获取不了那些已使用了代理服务器的用户真实IP地址(因为在这时Request.UserHostAddress获取到的就是这代理服务器的IP)..
getIp()又有安全隐患
具体怎么做就要看自己选择了.
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- asp.net中获得客户端的IP地址
- 如何在ASP.NET中获得客户端IP地址
- ASP.NET 获得客户端IP地址
- ASP.NET 获得客户端IP地址 收藏
- asp.net 获得客户端IP地址
- ASP.NET 获得客户端IP地址
- asp.net中获得IP地址代码
- ASP.net 获得客户端的IP
- asp.net 获得客户端ip
- asp中如何获得客户端的IP
- ASP.net 获得客户端的IP相关知识
- Scala开发入门指南
- CLI的wait子命令阻塞等待状态更新
- cogs #743
- CXF 客户端,设置超时时长
- 优化安卓应用内存的神秘方法以及背后的原理,一般人我不告诉他
- asp.net中获得客户端的IP地址
- NYOJ 289 苹果
- 万马股份非公开发行预案披露 拟募资12.58亿元加码新能源
- caffe中卷积计算方法
- tomcat数据库边接池配置
- SQL中实现截取字符串的函数
- 编程-杂
- Dell PowerEdge R710 R720U盘启动
- IOS7、8模态半透明弹出框