代码之家  ›  专栏  ›  技术社区  ›  4532066

跟踪API使用情况和GDPR合规性

  •  0
  • 4532066  · 技术社区  · 7 年前

    我想跟踪API的使用情况,这样我就可以看到是否有人通过发出大量请求来滥用服务。

    我能想到的唯一方法是跟踪用户的IP地址和用户代理,因此,一旦我确认他们的API密钥有效,我就会做一件简单的事情:

    $ua  = $_SERVER ['HTTP_USER_AGENT'];
    $ip  = $_SERVER['REMOTE_ADDR'];
    
    // get querystring data but strip out the 'api_key' bit for recording usage in database
    // https://stackoverflow.com/questions/17122563/php-remove-single-variable-value-pair-from-querystring
    $qs2 = NULL;
    foreach ($_GET as $keyv => $value){
        if ($keyv  != 'api_key'){
            $qs2 .= $keyv  . '=' . urlencode($value) . '&';
        }
    }
    
    $sql = "INSERT INTO j_un_api_log (fld_date, fld_user_id, fld_ip, fld_ua, fld_qs) VALUES (now(), :user_id, :ip, :ua, :qs)";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':user_id', $user_id);
    $stmt->bindParam(':ip', $ip);
    $stmt->bindParam(':ua', $ua);
    $stmt->bindParam(':qs', $qs2);
    $stmt->execute();
    

    但是,由于GDPR( https://eugdprcompliant.com/personal-data/

    符合GDPR

    我意识到这有可能偏离主题,但是-我认为这是与编程有关的,因为我不确定如何继续。

    如果不能,据我所知,除了简单地存储用户id、日期和时间以及每次调用的查询字符串之外,没有其他方法可以跟踪使用情况。

    我意识到我可以内置系统来防止大量使用,但这是一个基本的API,我想从简单地监控发生的事情开始,并从中吸取教训。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Synchro    7 年前

    GDPR并没有说你不能使用IP地址,但是你必须有一个合理的使用基础,如果你使用了,告诉人们,你不会保留超过必要的时间,并且不要与第三方共享它们。使用它们来防止虐待是完全合理的基础,只要你是这么说的,你做的。