按IP地址阻止用户

时间:2011-03-23 20:27:31

标签: sql-server-2008 ip-address

  

可能重复:
  Max length for client ip address

如果需要,我需要一种方法来阻止用户使用他们的IP。什么是最好的方法来解决这个问题?我可以使用Request.ServerVariables [“REMOTE_ADDR”]并将IP地址存储为数据库中的字符串吗?什么长度适合varchar?

由于

2 个答案:

答案 0 :(得分:1)

我们在其中一个应用中做了同样的事情,我们采用的方法是创建一个自定义的HttpHandler,它连接到Application_BeginRequest事件。

在处理程序内部,我们通过执行HttpContext.Current.Request.UserHostAddress抓取请求的IP地址,然后对我们阻止的IP地址列表执行检查。被阻止的IP都存储在数据库中,但我们还在服务器的内存中保存了一个缓存副本,以避免在每次请求时都访问数据库。

关于创建自定义HTTP模块Walkthrough: Creating and Registering a Custom HTTP Module

,MSDN上有一篇非常好的文章

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

答案 1 :(得分:0)

你可以将IP存储为长度为16的varchar,或者你可以存储单个整数b1 + b2 * 255 + b3 * 255^2 + b4 * 255^3,其中b1到b4是来自ip的字段,如b1.b2.b3.b4你可以使用其他校验和但是没有意义用于将长ip存储为字符串。