Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 按IP地址阻止用户_Sql Server 2008_Ip Address - Fatal编程技术网

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更好,这将具有恒定的长度。