【问题标题】:MySQL page visitors statistics, database overflow protectionMySQL页面访问者统计,数据库溢出保护
【发布时间】:2014-05-20 19:02:38
【问题描述】:

我正在编写页面访问者统计信息。对于每次“访问”,我都会保存:

  • 用户的 md5 ip(隐私政策...)
  • 访问过的页面的id(例如11,这是一个叫做gallery的页面的id)
  • 访问日期时间
  • 查询(例如 galery=cars&image=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 会更容易和更快。只需添加更多存储空间,并添加一些任务来检查日志数据库的大小。如果尺寸太大,它会向您发送警告消息,以便您可以备份和清理表格 - 或自动生成
  • 经过一段时间的阅读,以及您的评论,我认为您是对的……我对此太敏感了。我认为您可以从中做出答案,我会接受它,因为这些与我得出的结论相同。感谢您的兴趣和时间。

标签: php mysql statistics ip overflow


【解决方案1】:

有没有可能发生这样的事情?以前发生过类似的事情吗?您无法阻止这种情况,但即使日志以 1MB/s 的速度插入,也需要 12 天才能填满 1TB 磁盘。 DDOS 会更容易和更快。只需添加更多存储空间,并添加一些任务来检查日志数据库的大小。让它在大小变得太大时向您发送警告消息,以便您可以备份和清理表格 - 或自动生成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多