2014-05-20 96 views
1

我在写页面访问者统计信息。对于每一个“拜访”,我节省了:MySQL页面访问者统计,数据库溢出保护

  • 用户的MD5 IP(隐私策略...)
  • ID访问的网页(例如11,这是一个标识页面调用图库)
  • 日期时间访问
  • 查询(例如galery =汽车&图像= 18)

我不在乎多用户可以有相同的IP,如识别每个用户仍然不可能,这对我来说已经足够了。


执行此操作后,我想到了一个可能的问题。有人可以代理他的IP,并随机的页面查询。我知道,这听起来有点令人困惑和可怕,但这是可能的。在这种情况下,对于每一个这样的请求,我将一行插入到一个数据库(一个大小,例如128位)。

所以如果有人真的是恶性的,他可以循环他的请求,并在几天后,我会让我的数据库满。

现在的问题是:如何抵御这种可能的攻击? 我知道这个场景是黑暗的,但我记得我们的学校信息学挑战。而且我知道这种情况很暗,但可能。人类的想象力是未知的。


我不知道我应该在这里展示什么样的代码,因为我的问题总是理论上的问题。也许是我的脚本的一个小图。这是复杂得多,但问题可以减少到这样一条线:

<?php 
    $visit = array(
     'ip' => = md5($_SERVER['REMOTE_ADDR']), // privacy policy 
     'pageid' => '...', // page id number 
     'query' => '...' // query part of url from address bar for example a=1&c=10 
    ); 
    if (inDatabase('visits', $visit)) { 
     echo 'Page visited'; 
    } 
    else { 
     $visit['date'] = date('Y-m-d H:i:s'); 
     insertToDatabase('visits', $visit); // if random IP, and random query, it inserts for every request!!! 
    } 
?> 
+0

有没有可能发生类似这种事情?这样的事情发生过吗?你不能防止这种情况发生,但即使日志会插入1MB/s,也需要12天来填充1TB磁盘。 DDOS会更容易,更快速。只需添加更多的存储空间,并添加一些任务来检查日志DB的大小。如果尺寸变得太大,让它发送给你一个警告信息,这样你就可以进行备份和清理表格 - 或自动生成 –

+0

经过一段时间的阅读和你的评论,我认为你是对的...我'对于这件事太过分了。我想你可以从中得出答案,我会接受它,因为这些结论与我一起得出的结论是一样的。 Thx为您的兴趣和时间。 –

回答

1

有没有可能发生类似的事情会发生?这样的事情发生过吗?你不能防止这种情况发生,但即使日志会插入1MB/s,也需要12天来填充1TB磁盘。 DDOS会更容易,更快速。只需添加更多的存储空间,并添加一些任务来检查日志DB的大小。如果尺寸变得太大,让它发送警告信息,以便您可以进行备份和清洁表格 - 或自动生成