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

标签 php api privacy

我设置了一个非常简单的 API,它提供 JSON 格式的数据。

我想跟踪 API 的使用情况,以便了解是否有人通过发出大量请求来滥用该服务。

我能想到的唯一方法是跟踪用户的 IP 地址和用户代理,所以一旦我确认他们的 API key 有效,我就会做这个简单的事情:

$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/ ) 立法,观点是:

all IP addresses should be treated as personal data, in order to be GDPR compliant

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

如果我有一个条款和条件部分,规定每次调用 API 时我都会存储 IP 地址和用户代理以跟踪使用情况并防止滥用,并要求用户在注册时接受条款和条件,这是否意味着我可以存储 IP 地址和用户代理数据吗?

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

如果我也无法存储注册用户的 IP 地址和用户代理,那么大概就没有办法阻止那些捣乱 API 的麻烦用户。

我意识到我可以构建系统来防止大量使用,但这是一个基本的 API,我想从简单地监控正在发生的事情并从那里获取它开始。

最佳答案

GDPR 并不是说​​您不能使用 IP 地址,而是说您必须有合理的基础来使用它们,如果您这样做,请告诉人们,您不会将它们保留超过必要的时间,并且不要共享他们与第三方。使用它们来防止滥用是一个完全合理的基础,只要这就是你所说的和你所做的。

对于速率限制,大多数防火墙都会以很少的开销(纯粹基于 IP,而不是 ID)来做到这一点。在您自己的应用程序中安全地执行此操作的方法是根据 IP 和 ID 的哈希值对命中进行索引。由于您无法从哈希返回原始数据,因此可以安全地保留而不会发出额外警告。

关于php - 跟踪 API 使用情况和 GDPR 合规性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52791127/

相关文章:

javascript - 为什么 Privacy Badger 会阻止 Firebase javascript 文件?

php - 从 html 表单中提取日期和时间以在 mysql 查询中使用它们

php - 将 PHP 异常存储在数组中

php - php 中的 a+(读取/追加)与 a(追加)有何不同

php - 如何在php文件中使用jquery?

c# - 使用 Restful asp.net Web api 和安全 API 进行用户登录身份验证

api - 我可以使用 BlueSnap API 创建 PayPal 订阅吗?

java - 作业 API 的 Jenkins 扩展点

ios - 以编程方式更改 CLLocationManager 权限警报中的文本

存储私有(private)数据时存在安全风险