Sql server 2008 按IP地址阻止用户
可能重复:Sql server 2008 按IP地址阻止用户,sql-server-2008,ip-address,Sql Server 2008,Ip Address,可能重复: 如果需要,我需要一种阻止用户访问IP的方法。最好的方法是什么?我可以使用Request.ServerVariables[“REMOTE\u ADDR”]并将ip地址作为字符串存储在数据库中吗?什么长度适合varchar 谢谢您可以将IP存储为长度为16的varchar,也可以存储单个整数b1+b2*255+b3*255^2+b4*255^3,其中b1到b4是来自IP的字段,作为b1.b2.b3.b4您可以使用其他校验和,但是没有必要将长ip存储为字符串。我们在一个应用程序中做了同样
如果需要,我需要一种阻止用户访问IP的方法。最好的方法是什么?我可以使用Request.ServerVariables[“REMOTE\u ADDR”]并将ip地址作为字符串存储在数据库中吗?什么长度适合varchar
谢谢您可以将IP存储为长度为16的varchar,也可以存储单个整数
b1+b2*255+b3*255^2+b4*255^3
,其中b1到b4是来自IP的字段,作为b1.b2.b3.b4
您可以使用其他校验和,但是没有必要将长ip存储为字符串。我们在一个应用程序中做了同样的事情,我们采取的方法是创建一个定制的HttpHandler,它连接到应用程序BeginRequest
事件
在处理程序中,我们通过执行HttpContext.Current.request.UserHostAddress
获取请求的IP地址,然后根据阻止的IP地址列表执行检查。被阻止的IP都存储在数据库中,但我们还在服务器的内存中保留一个缓存副本,以避免每次请求时访问数据库
在MSDN上有一篇关于创建自定义HTTP模块的非常好的文章
值得一提的是,我们将IP作为字符串存储在数据库中,但在已经添加的帖子中,有一些关于最佳格式的好信息。视情况而定。你支持IPv6吗?事实上我不太确定,我支持折扣。你应该知道,现在很多人都在路由器后面,所以封锁ip会封锁路由器后面的所有人。看看这个链接对你有没有帮助,这不适合IPv6。是的,我不好,但一些校验和会比整个ip更好,这将具有恒定的长度。