Отслеживание использования API и соответствия GDPR - PullRequest
0 голосов
/ 13 октября 2018

Я установил очень простой API, который предоставляет данные в формате JSON.

Я хочу отслеживать использование 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/)), точка зрения такова:

все IP-адреса должны рассматриваться как персональные данные, чтобы обеспечить совместимость с GDPR

Я понимаю, что это рискует стать не по теме, однако - я думаю, что это связано с программированием, потому что я не уверен, как действовать здесь.

Если у меня есть Условия использованияраздел, в котором говорится, что я буду хранить IP-адрес и пользовательский агент каждый раз, когда вызывается API для отслеживания использования и предотвращения злоупотреблений, и просить пользователей принять Условия регистрации, означает ли это, что я могу сохранить IP-адрес?ddresses и данные агента пользователя?

Если я не могу, насколько я вижу, нет способа отследить использование, кроме простого сохранения, может быть, только идентификатора пользователя, даты и времени и строки запроса для каждого вызова.

Если я также не могу сохранить IP-адрес и пользовательский агент для зарегистрированного пользователя, то, по-видимому, нет никакого способа, например, заблокировать проблемного пользователя, который забивает API.

Я понимаю, что могу встроить системы, чтобы предотвратить использование большого объема, но это базовый API, и я хотел начать с простого мониторинга происходящего и получить его оттуда.

1 Ответ

0 голосов
/ 13 октября 2018

GDPR не говорит о том, что вы не можете использовать IP-адреса, но у вас должна быть разумная основа для их использования, говорите людям, если вы это делаете, что вы не храните их дольше, чем необходимо, и не делитесь имиих с третьими лицами.Использование их для защиты от злоупотреблений является вполне разумным основанием, при условии, что это то, что вы говорите, и то, что вы делаете.

Для ограничения скорости большинство брандмауэров будут делать это с небольшими накладными расходами (чисто по IP, а не по ID).Безопасный способ сделать это в своем приложении - проиндексировать попадания в соответствии с хешем IP и ID.Поскольку вы не можете получить обратно из исходных данных из хэша, безопасно сохранить без дополнительных предупреждений.

...