C获取主机客户端要点

上传人:简****9 文档编号:57430019 上传时间:2022-02-24 格式:DOCX 页数:5 大小:69.16KB
收藏 版权申诉 举报 下载
C获取主机客户端要点_第1页
第1页 / 共5页
C获取主机客户端要点_第2页
第2页 / 共5页
C获取主机客户端要点_第3页
第3页 / 共5页
资源描述:

《C获取主机客户端要点》由会员分享,可在线阅读,更多相关《C获取主机客户端要点(5页珍藏版)》请在装配图网上搜索。

1、客户端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.ServerV

2、ariables.Get(Server_Name).ToString();如果你想进一步了解 ServerVariables ,可以用foreach(String o in Request.ServerVariables)Response.Write(o+=+Request.ServerVariableso+); 对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器 的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。REMOTE_ADDR 明:访问客户端的IP地址。此项信息用户不可以修改。如果真的给改了的话,你也和服

3、务器连接不了了 ,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。另:Request.UserHostAddress 和 Request.ServerVariablesREMOTE_ADDR实际是同一个值。如何绕过代理服务器获得用户真实的IP地址呢? 这时候我们一般是类似如下的代码(这里我简单起见,没有作一些边界判断)private static string getIp()if(System.Web.HttpContext.Current.Request.ServerVariablesHTTP_VI

4、A != null)returnSystem.Web.HttpContext.Current.Request.ServerVariablesHTTP_X_FORWARDED_FOR.Split(newchar口,)0;elsereturnSystem.Web.HttpContext.Current.Request.ServerVariablesREMOTE_ADDR;这样就足够了么?这样是有问题的,HTTP_X_FORWARDED_FORTTP_VIA是可以被冒名的。如果正好这里有SQL注入问题的话,那可非常严重了。下面我们就来具体看 HTTP_VIA 和 HTTP_X_FORWARDED_I

5、WR 个 ServerVariables 。HTTP_VIA如果有该条信息,就证明您使用了代理服务器,代理服务器的地址就是后面的数值。HTTP_X_FORWARDED_FOR如果有该条信息,也证明了您使用了代理服务器代理服务器的地址就是后面的数值。需要注意的,http_x_forwarded_fOR ,并不一定是只有一个IP地址,下面的信息也是可能的,每行一条记录。下面数据取材于CSDN实际的数据。10.194.73.11unknown, unknown, 211.100.22.30203.98.182.163, 203.98.182.163, 203.129.72.215172.16.20.

6、110, 202.116.64.196, 203.81.21.6110.194.75.83, 10.194.73.11, 10.194.73.11, unknown192.168.120.57, unknown, unknown, 211.10.10.19510.2.4.211,219.141.250.33.242.165.168, 218.108.22.164unknown, 211.100.22.30192.168.83.56, 210.21.224.233218.94.136.176, 203.81.21.61unknown, 210.75.1.18110.161.196.218, 20

7、2.104.134.23222.216.6.148, 222.216.6.146155.161.59.47, unknown需要注意的是这两个值都是可以被改掉的。对于这三个值:REMOTE_ADDFHTTP_VIA HTTP_X_FORWARDED_FO说,可以分以下五种情况:一、没有使用代理服务器的情况:REMOTE_ADDR 卷的 IPHTTP_VIA =没数值或不显示HTTP_X_FORWARDED_FOR数值或不显示二、使用透明代理服务器的情况:Transparent ProxiesREMOTE_ADDR最后一个代理服务器IPHTTP_VIA =代理服务器IPHTTP_X_FORWAR

8、DED_FOR=勺真实IP ,经过多个代理服务器时,这个值类似如下: 203.98.182.163, 203.98.182.163, 203.129.72.215。这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。三、使用普通匿名代理服务器的情况:Anonymous ProxiesREMOTE_ADDR最后一个代理服务器IPHTTP_VIA =代理服务器IP http_x_forwarded_foRW服务器IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。隐藏了您的真实IP,但是

9、向访问对象透露了您是使用代理服务器访问他们的。四、使用欺骗性代理服务器的情况:Distorting ProxiesREMOTE_ADDR式理服务器IPHTTP_VIA =代理服务器IPhttp_x_forwarded_foRM的IP ,经过多个代理服务器时,这个值类似如下: 203.98.182.163, 203.98.182.163, 203.129.72.215。告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)REMOTE_ADDR式理服务器IP

10、HTTP_VIA =没数值或不显示 http_x_forwarded_foR数值或不显示,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。下面是一个简单的代码,来演示冒名上述信息,博客的测试代码。服务器端的UserIP.ASPX 页面的代码:protected void Page_Load(object sender, EventArgs e)StringBuilder info = new StringBuilder();

11、 我们关注的三个 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);/其他有参考价值的 ServerVaria

12、blesforeach (string key inRequest.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:/localho

13、st:7867/MyTestWebSite/UserIP.aspx);request.Headers.Add(REMOTE ADDR, 192.168.5.88);request.Headers.Add(VIA,ghj1976);request.Headers.Add(X_FORWARDED_FOR, 0.0.0.0);HttpWebResponse response =(HttpWebResponse)request.GetResponse();StreamReader stream = newStreamReader(response.GetResponseStream();string

14、info =stream.ReadToEnd();stream.Close();response.Close();request =null;Console.Write(info);Console.ReadLine();测试的结果中的重要信息:测试的结果数据比较多,我这里只罗列了几个重要的。HTTP_VIA = ghj1976 HTTP_X_FORWARDED_FOR = 0.0.0.0 REMOTE_ADDR = 127.0.0.1 *REMOTE_ADDR = 127.0.0.1 HTTP_VIA = ghj1976 HTTP_REMOTE_ADDR = 192.168.5.88 HTTP

15、_X_FORWARDED_FOR = 0.0.0.0 上面测试代码需要注意的是:我们在客户端代码中设置了三个HTTP头信息,分别是:REMOTE_ADDR/IA、X_FORWARDED_FOR实际在服务器段,这三个值应该通过下面三个属性来读取HTTP_REMOTE_ADDRTTP_VIA、 HTTP_X_FORWARDED_FOR他们的区另打!REMOTE_ADDR性是无法设置的。或者说,设置的不是我们所希望的。小结:1、REMOTE_ADDR可被修改,但是可能会获得代理服务器的IP ,而不是实际客户端的IP。2、通过HTTP_VIA、HTTP_X_FORWARDED_FOR可以获得代理服务器所代理的信息,但是这依靠代理服务器的支持。另外,这两个值可以被修改。我们通过它获得的信息可能是不真实的。另,HTTP_X_FORWARDED_FOR的信息可能是一个集合,不含 REMOTE_ADDR的代理服务器IP。没有一个完美的解决获得客户端IP地址的方法,我们只能在上面2个信息中取舍。获取当前时间DateTime.Now.ToShortDateString()

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!