少说我想阻止来自特定国家/地区的访问者,编写它的正确方法是什么?
我试图使用deny from ip
但这不是正确的做法。
答案 0 :(得分:1)
正确的方法是不使用htaccess,你可以使用已填充的表格进行一些PHP检查,其中ip间隔会告诉你哪个时间间隔会影响到哪个国家/地区。
修改强>
如果你想使用htacces,你必须为一个国家的每个ip范围写一个deny from ip
行(例如,如果你试图阻止10个国家,这可能会导致一团糟,这就是为什么这是一个坏主意。)
答案 1 :(得分:1)
如果必须是.htaccess
文件,那么您可以使用ipinfodb.com上提供的自动生成器工具。您还可以使用地理定位服务的API,例如:http://freegeoip.net/static/index.html。
答案 2 :(得分:0)
您使用的任何方法都不会是完全证明的。用户可以使用代理使它们看起来位于与其实际位置不同的地理位置。如果阻止用户从某些区域访问您的站点至关重要,则必须考虑不同的身份验证方法(不依赖于IP地址)。
答案 3 :(得分:0)
使用Apache的.htaccess文件阻止特定网络非常简单。例如,添加...
拒绝221.140.10.0/24
..会阻止来自221.140.10.0 C类网络的任何流量(AKA为斜线-24)。
因此,阻止特定国家/地区只需查找这些国家/地区的所有网络,然后创建一系列条目,如上所述。
此参考link可能会对您有所帮助
答案 4 :(得分:0)
如果您对performance感到担忧,我建议您使用PHP Extension API。使用PHP(C API)扩展,您每秒可以获得超过700万次查询。众所周知,htaccess会产生性能副作用。
我将介绍如何编译扩展,以及如何使用PHP中的mmdb数据库通过iso-3316双字符代码限制国家/地区:
Intro to Maxmind GeoLite2 with Kohana PHP