封锁用户IP地址

12 浏览
0 Comments

封锁用户IP地址

我需要一种方法来根据需要阻止用户的IP。最佳方法是什么?我可以使用Request.ServerVariables["REMOTE_ADDR"]将IP地址存储为字符串在数据库中吗?varchar的适当长度是多少?谢谢。

0
0 Comments

问题出现的原因:IP地址被用作阻止用户访问某些内容或功能,但存储长IP地址字符串会占用较大的存储空间,不适合长期存储。

解决方法:将IP地址存储为varchar类型或将其转换为单个整数进行存储。可以使用以下计算公式:b1 + b2 * 255 + b3 * 255^2 + b4 * 255^3,其中b1到b4是IP地址中的字段,形式为b1.b2.b3.b4。虽然该方法无法适用于IPv6地址,但使用某些校验和要比存储整个IP地址更好,且长度固定。

0
0 Comments

通过IP地址阻止用户访问的原因:为了阻止某些IP地址的用户访问应用程序。

解决方法:创建一个自定义的HttpHandler,并将其连接到Application_BeginRequest事件。在处理程序中,通过HttpContext.Current.Request.UserHostAddress获取请求的IP地址,然后与我们的被阻止IP地址列表进行检查。被阻止的IP地址存储在数据库中,但我们还在服务器中保留了一个缓存副本,以避免在每个请求中访问数据库。

有一个关于创建自定义HTTP模块的非常好的MSDN文章:Walkthrough: Creating and Registering a Custom HTTP Module。

我们将IP地址作为字符串存储在数据库中,但在已添加的帖子中已经提供了有关使用的最佳格式的一些好信息。

0