我在写页面访问者统计信息。对于每一个“拜访”,我节省了: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!!!
}
?>
有没有可能发生类似这种事情?这样的事情发生过吗?你不能防止这种情况发生,但即使日志会插入1MB/s,也需要12天来填充1TB磁盘。 DDOS会更容易,更快速。只需添加更多的存储空间,并添加一些任务来检查日志DB的大小。如果尺寸变得太大,让它发送给你一个警告信息,这样你就可以进行备份和清理表格 - 或自动生成 –
经过一段时间的阅读和你的评论,我认为你是对的...我'对于这件事太过分了。我想你可以从中得出答案,我会接受它,因为这些结论与我一起得出的结论是一样的。 Thx为您的兴趣和时间。 –