【发布时间】:2013-07-31 10:31:36
【问题描述】:
我正在为我的网站制作一个 anto-fload 脚本。我不能使用任何处理它的服务,比如fail2ban 等。我关于 $_SERVER['REMOTE_ADDR'] 值的问题。 有什么方法可以让这个函数返回一个错误的 IP?我在某处听说这是可能的,我想知道这是怎么发生的,我能做些什么来防止它? 那是我的脚本:
$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * from `banned_users` WHERE `ip`='".$ip."'";
if(mysql_num_rows(mysql_query($query))!=0)die("you have been banned from the site!");
if(isset($_SESSION['views']) && isset($_SESSION['time']) && $_SESSION['time']>=time()-2)$_SESSION['views']++;
else {
$_SESSION['views']=1;
$_SESSION['time'] = time();
}
if($_SESSION['views']>=15){
$query = "INSERT into `banned_users` values ('',".time().",'".$ip."') ";
mysql_query($query);
die();
}
如您所见,如果用户在 2 秒内刷新超过 15 次,则会禁止他访问该网站。 我的另一个问题是关于 15 次操作,它是否物有所值?我应该降低它吗?因为我的主机有带宽限制。
谢谢。
【问题讨论】:
-
我建议你不要写这个脚本。
-
@Bondye 嗨,我说的不是本地主机,除了 IIS6 和 7 之外,还有什么其他原因会导致我得到一个错误的 IP?
-
@YourCommonSense 嗨,我没有得到定义错误。朋友是什么意思?
-
不,那不可能。
-
是的,当然有。不,你不能对它做任何事情。