我想知道是否允许访问成员区域将更有效的通过htaccess允许或PHP数组的ip来检查每个页面。我主要对表演感兴趣。
当您处理数百甚至数千个ip时,推荐使用这两种方法吗?
有更好的方法吗?
更新:如果我嗅探IP,然后根据IP是否被识别,我开始一个会员或无会员会话,以便不必检查IP每个页面浏览量?
使用htaccess可能更快,因为您不需要运行php处理程序来运行php脚本。对于阻塞 IP地址,我给出了类似的答案,该IP地址利用RewriteMap
。你只需要另一种方式,而不是拒绝那些ip的访问,授予访问权限:
RewriteMap allow_ips txt:/path/to/allow_ips.txt
RewriteCond ${allow_ips:%{REMOTE_ADDR}|0} =1
RewriteRule ^protected/path - [L]
RewriteRule ^protected/path - [L,F]
allow_ips .txt文件的内容如下:
12.34.56.78 1
11.22.33.44 1
etc.
指向的RewriteMap
必须在server或vhost config中。你可以从htaccess中定义一个map,不过你可以在那里使用它。
如果您不能使用映射,那么您需要枚举所有具有Allow
的ip。在要保护的目录下的htaccess文件中:
Order Allow,Deny
Deny from all
Allow from 12.34.56.78
Allow from 11.22.33.44
...
最好的方法可能是通过htpasswd实现用户/密码。这里有一个教程。然后你可以把有更好的方法吗?
Auth*
的东西放在一个htaccess文件在你想要保护的目录,就是这样。简单。 你可以使用。htaccess
<Files 403.shtml>
order deny,allow
deny from all
</Files>
allow from 142.4.98.37
allow from 193.105.210.217
allow from 142.4.98.35
//Allow those ip which you want
如果您正在处理超过一百个ip地址,特别是动态ip,当然允许访问的最佳方式是通过PHP脚本,就像这样!请记住,这段代码只是一个示例,并没有完全审查:
while($row = mysqli_fetch_array($result)) {
if ($_SERVER['SERVER_ADDR'] != $row['ip']) {
header('HTTP/1.0 403 Forbidden');
break;
}
}
查看者可以做剩下的事情来修复上面的语法,这就是为什么它在社区wiki。
关于优势
对我来说,服务器端脚本语言有很多优点。这样,您甚至可以编程应用程序,使自动阻止发送垃圾邮件的用户的ip地址,您甚至可以编程他们被阻止的时间。