因GDPR而阻止所有欧盟访客

问题描述 投票:4回答:5

GDPR对谁知道什么是违法行为的罚款实施了数百万美元的罚款。 PHP中是否有一个简单的免费解决方案来处理我的个人网站?我不需要追踪人,但我想至少知道谁在访问,例如我想知道浏览器,操作系统,组织。我当然愿意阻止所有欧盟访客,但我知道很多人将他们的浏览器设置为英语,所以语言阻塞是无效的。

作为一个非律师和维护者只是一个没有钱的简单网站,我认识到我永远不会完全理解GDPR,我永远不会有资金随着它的变化而跟上它。只有大公司才能负担得起花费所需的时间,精力和金钱。所以我需要一个简单的机制来阻止欧盟用户,否则,我将不得不采取保守的方法来收集访问者的数据。

这项GDPR法律威胁那些因违规行为而遭受经济死亡的人,但绝大多数人都不知道其模糊规则究竟需要什么。这是一项法律,有利于拥有资源的大公司,并且是对小公司和个人的攻击。

php http http-headers ip-address privacy
5个回答
8
投票

首先,最好先阅读合法利益 - https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/legitimate-interests/when-can-we-rely-on-legitimate-interests/ - 然后询问从用户那里收集个人数据的法律依据是什么?

与您的问题相关,实际上有可能通过nginx和GeoIP数据库。

为nginx安装GeoIP数据库:

apt-get install geoip-database-contrib -y

更新你的nginx配置(在server {} block之外):

# Block the EU continent from accessing the site

geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoLiteCity.dat;
map $geoip_city_continent_code $allow_visit {
   default 1;
   EU 0;
}

server {}块内,禁用EU用户的日志记录并返回403:

# Disable logging for EU users
access_log /var/log/nginx/access.log combined if=$allow_visit;
# Block and return 403 error message to EU users
default_type text/plain;
if ($allow_visit = 0) {
        return 403 'You are prohibited from visiting this website due to GDPR compliance requirements.';
    }

重启nginx

service nginx restart

积分兑换https://medium.com/@jacksonpalmer/gdpr-for-side-projects-blocking-all-eu-traffic-with-nginx-in-3-simple-steps-136ddd8078a4


1
投票

对于那些不自信或无法访问和修改服务器配置的人来说,还有一个简单的插件可用于此,这对许多人来说可能更容易实现。您只需根据网站上提供的安装说明,将JavaScript标记添加到页面代码中的开始标记即可。

https://www.ezigdpr.com/products/eu-visitor-blocker

通过在页面加载的第一个实例处触发阻止脚本,它可以防止加载任何跟踪脚本,插件或像素。

如果您具备技术能力和访问权限,则可以考虑在服务器级别关闭IP日志记录;虽然有争议的是,如果您不知道如何访问它,那么它可能不在GDPR的范围内。

您可能还想阅读以下博客文章,其中概述了与阻止欧盟流量相关的不同考虑因素和合规性缺陷。

https://www.ezigdpr.com/blog/2018/06/05/6/is-it-gdpr-compliant-to-block-eu-visitors


0
投票

我使用websiteip2location.com,这是一个旨在列出所有IP地址的网站。 IP拒绝管理器是一个实用程序,可用于大多数使用C-Panel的托管服务。

虽然看起来很细致,但我打算复制欧盟每个国家/地区的每个IP地址范围,并将其粘贴到C-Panel的IP Deny Manager工具中。

我不确定这是否是最好的技术解决方案,但这是我能想到的最好的解决方案。


-1
投票

尽管有欧盟GDPR,但请记住,法院的法律管辖权将是您网站上所声明的“使用条款”协议(或者无论如何都应该如此)。法律的重要性在于网站所有者已做出“诚意努力”以禁止这些成员国的网站。

鉴于此,下面是一个可重复使用的PHP函数,它使用“ip-api.com”API返回IP上的位置数据,并根据当前欧盟成员国的白名单进行检查。白名单很容易维护,这很好,因为进入和离开欧盟的国家都在不断变化。白名单于1018年7月24日汇总,欧盟官方网站和维基百科之间的数据交叉核对。 'ip-api.com'API是免费供个人使用(商业用途的联系人),也可以从您的本地服务器运行,无需注册或域名要求。

function inEU($ip_input){

  // Validate the IP address
  if (filter_var($ip_input, FILTER_VALIDATE_IP) === false){
    // Not a valid IP address - build error response
    $message_string =
      '<div style="width:100%; margin-top:50px; text-align:center;">'.
        '<div style="width:100%; font-family:arial,sans-serif; font-size:24px; color:#c00; centered">'.
          'ERROR:&nbsp;<span style="color:#fd0">Invalid IP Address</span>'.
        '</div>'.
      '</div>';
    echo $message_string;
    exit;
  }

  // Array of country names and country codes of European Union member countries
  $eu_members = array(
    'Austria','AT',   'Belgium','BE',      'Bulgaria','BG',
    'Croatia','HR',   'Cyprus','CY',       'Czech Republic','CZ',
    'Denmark','DK',   'Estonia','EE',      'Finland','FI',
    'France','FR',    'Germany','DE',      'Greece','GR',
    'Hungary','HU',   'Ireland','IE',      'Italy','IT',
    'Latvia','LV',    'Lithuania','LT',    'Luxembourg','LU',
    'Malta','MT',     'Netherlands','NL',  'Netherlands Antilles','AN',
    'Poland','PL',    'Portugal','PT',     'Romania','RO',
    'Slovakia','SK',  'Slovenia','SI',     'Spain','ES',
    'Sweden','SE',    'United Kingdom','GB','UK'
  );
  $query_url = 'http://ip-api.com/json/'.$ip_input;  // Build query URL for IP to JSON Data request
  $ip_data_fetched = file_get_contents($query_url);  // Return IP Data JSON as a string
  $ip_data_fetched = utf8_encode($ip_data_fetched);  // Encode returned JSON string to utf-8 if needed
  $ip_data         = json_decode($ip_data_fetched);  // Decode utf-8 JSON string as PHP object

  // Get the Country and Country Code for the IP from the returned data
  $country     = $ip_data->country;      // Country Name (i.e; 'United States')
  $countryCode = $ip_data->countryCode;  // Country Code (i.e; 'US')

  // Check the EU members array for match to either country or country code
  $in_EU = false;                        // Ref for function boolean value returned - set false
  $num_members = count($eu_members);     // Number of indexes in EU members array (not # of members)
  for ($i = 0; $i < $num_members; $i++){
    $lc_eu_members = strtolower($eu_members[$i]);
    if ($lc_eu_members === strtolower($country) || $lc_eu_members === strtolower($countryCode)){
      $in_EU = true;
      break;
    }
  }
  return $in_EU;
}

并使用该功能......

if (inEU( $ip )){
  // IP address IS in an EU country
}
else {
  // IP address IS NOT in an EU country
}

该函数还在同一循环中交叉检查返回的位置数据,因此如果一个var中存在拼写错误,它仍将使用其他var找到该位置。对于两者都错了是不可能的。

此功能可以轻松地适用于许多其他IP返回JSON响应的位置API。它也可以很容易地被改编为“仅允许”白名单,而不是“禁止”白名单。

希望这可以帮助!


-2
投票

这是一个重要的问题,虽然不是直接编程问题,但重要的是要知道你是否是程序员,因为如今大多数编程需要通过互联网发送数据。我一直在研究GDPR,我在论坛上看到的最大误解是这个法律术语都是关于保护访问网站的欧盟公民的隐私。错误。再次阅读GDPR。

GDPR是关于通过互联网传输PII数据的方式,这与仅在美国已经存在多年的法律不一致。以下是我可以为您提供的关于无法执行的GDPR的众多示例之一。

假设您是美国公民,您刚收到欧盟公民的电子邮件。布拉姆!您已经违反了GDPR。为什么?因为所有电子邮件都像任何互联网请求一样具有标题,并且标题信息中包含原始IP地址,以及其到邮件提供商邮件服务器的路径的完整跟踪。根据美国联邦法律,所有电子邮件都必须无限期地由电子邮件服务提供商归档,从而违反GDPR法律以符合美国联邦法律,因为电子邮件的标题信息是其中的一部分,因此非根据美国法律,可分离的电子邮件需要存档。

不仅如此!但是你是否意识到,如果他们想亲自保留该电子邮件的副本,并且在阅读之后不立即销毁它,那么电子邮件的实际收件人也将违反GDPR。无论刚刚描述的其他情况如何,只有欧盟公民向美国公民发送该电子邮件,自动将该美国公民置于违反GDPR的状态......而且他们甚至不必打开电子邮件,因为IP跟踪数据已经存在在发送的电子邮件甚至到达收件人收件箱之前由邮件服务提供商获取和记录。

是的......这只是这种疯狂,过度热情,过于理想化,过度强加于各自国家内非欧盟公民权利的开始。

从本质上讲,欧盟公民要求全世界遵守他们认为最适合世界其他国家的法律,同时不承认非欧盟国家的公民有权制定他们各自的法律。他们自己国家的公民通过自己的政府立法程序。

这意味着GDPR本身就具有歧视性。在美国,歧视是违法的,因此遵守GDPR是对我的非欧盟公民的歧视,因此我打破了自己的国家法律,以便能够遵守GDPR。

现在回复原来的OP。在这种情况下我做的是“点击”我的网站。访问者在到达网站时会显示一条消息,如果他们是欧盟公民,则禁止他们访问该网站,还有两个按钮“我是欧盟公民”和“我不是欧盟公民”。此时,我还没有获得编程访问权限或存储访问者IP地址,唯一可用的操作是两个按钮之一。

如果访问者点击“我是欧盟公民”按钮,访问者会立即被发送回他们来自的推介页面。如果他们点击“我不是欧盟公民”按钮,则允许他们访问该网站。如果他们为了访问网站而撒谎,那么他们就会犯下故意的欺诈行为,仅通过这一行动,他们就放弃了他们在GDPR下可能拥有的任何和所有权利,现在他们的知识产权被保留用于合法有关其预先警告和禁止访问网站的要求,以及通常的服务器安全性和网站分析使用。

此外,在确认他们不是欧盟公民之前,请务必不要加载任何第三方服务,因为这些第三方服务还会收集访问者的数据,这些数据仍然可能被您视为违反GDPR,如果访客宣布访客公民身份,如果加载到初始消息页面,则不是第三方。

在这个时候,我会说“点击换行”方法是小网站所有者可以保护自己免受任何GDPR索赔的唯一方法。 GDPR不向通过欺诈手段访问您网站的欧盟平民提供保护。

© www.soinside.com 2019 - 2024. All rights reserved.