易截截图软件、单文件、免安装、纯绿色、仅160KB

asp.net 获取IP的相关知识

ASP.net 获得客户端的IP,最常见的是使用下述代码:
string user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
对于了解代理服务器情况的人,我们会知道,如果用户使用了代理服务器,上述代码获得的是代理服务器的IP地址;如果用户使用了多个代理服务器,则是到达服务器的最后一个代理服务器的IP地址。
REMOTE_ADDR 说明:
访问客户端的 IP 地址。
此项信息用户不可以修改。
如果真的给改了的话,你也和服务器连接不了了,服务器就是按照这个来与客户端建立连接并进行通讯的。实际我测试修改这个 ServerVariables , 一点效果都没有。仍然获得是实际的值。
另: Request.UserHostAddress 和 Request.ServerVariables["REMOTE_ADDR"] 实际是同一个值。
如何绕过代理服务器获得用户真实的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"];
}
这样就足够了么? 这样是有问题的,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 实际的数据。
10.194.73.11
unknown, unknown, 211.100.22.30
203.98.182.163, 203.98.182.163, 203.129.72.215
172.16.20.110, 202.116.64.196, 203.81.21.61
10.194.75.83, 10.194.73.11, 10.194.73.11, unknown
192.168.120.57, unknown, unknown, 211.10.10.195
10.2.4.211, 219.141.250.3
3.242.165.168, 218.108.22.164
unknown, 211.100.22.30
192.168.83.56, 210.21.224.233
218.94.136.


相关文档:

ASP.NET自定义错误页面

 ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件、Application_Error 事件以及应用程序配置文件 (Web.config)。
如果您不调用 Server.ClearError 或者捕获 Page_Error 或 Application_Error 事件中的错误,则将根据 Web.config 文件的 <customErrors> 部分中的设置处理错误。在 & ......

ASP.NET


      通常,SQL 语句和存储过程包括运行时计算的参数。使用参数编写的 SQL 语句称作参数化 SQL 语句。
使用 SqlDataSource 控件时,可以指定使用参数的 SQL 查询和语句。通过根据运行时计算的值读写数据库信息,这有助于提升数据绑定环境的灵活性。可以从各种源获取参数值。这些源包括 ASP.N ......

asp.net取得系统时间日期的各种形式

////今天在修改程序的时候发现一个小的问题特记录如下:
//////有时候datetime无法转成string,可以用getdate()直接插入就可以了
string str = "update adaddress set shenhe=" + ck + " ,shentime=getDate() where id=" + uid + "";
/////////////////////////////////////////
以下具体介绍日期怎样转换
DateTime.Now ......

ASP.NET


      可以使用 SqlDataSource 控件修改数据库中的数据。使用更新方案中的 SqlDataSource 控件的最常用方法是检索数据并使用数据绑定 Web 服务器控件(如 GridView、DetailsView 或 FormView 控件)显示数据。可以配置数据绑定控件和 SqlDataSource 以更新数据。大多数数据绑定控件都允许您将其 ......

ASP.NET


      SqlDataSource 控件可对它检索过的数据进行缓存,这样可以避免再次运行资源消耗量较大的查询,从而提高应用程序的性能。缓存主要用于数据变化不频繁的情况。
此外,当通过 System.Data.SqlClient 提供程序使用 SqlDataSource 控件时,可以使用 SqlCacheDependency 对象。这样可使 SqlDat ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号