Блокировать всех посетителей ЕС из-за GDPR - PullRequest
0 голосов
/ 19 мая 2018

GDPR налагает штрафы в миллион долларов за нарушение правил "кто знает что", что является безумным.Есть ли в PHP простое бесплатное решение для моего личного сайта?Мне не нужно для отслеживания людей, но я бы хотел хотя бы иметь представление о том, кто посещает, например, я хочу знать браузер, операционную систему, организацию.Я, конечно, открыт для блокировки всех посетителей ЕС , но Я знаю, что многие настраивают свой браузер на английский, поэтому блокировка по языку неэффективна.

Как не юрист и сопровождающий всего лишь простоговеб-сайт, на котором нет денег, я признаю, что никогда не буду полностью понимать GDPR, и у меня никогда не будет средств, чтобы быть в курсе его изменений по мере их изменения.Только крупные компании могут позволить себе потратить необходимое количество времени, сил и денег.Поэтому мне нужен простой механизм, чтобы блокировать пользователей из ЕС, иначе мне придется придерживаться консервативного подхода, заключающегося в сборе данных о посетителях.

Этот закон о ВВПР угрожает людям экономической смертью за несоблюдение, ноПодавляющее большинство людей понятия не имеют, что на самом деле требуют их расплывчатые правилаЭто закон, который одобряет крупные компании с ресурсами и является нападением на небольшие компании и частных лиц.

Ответы [ 4 ]

0 голосов
/ 28 марта 2019

Я использую websiteip2location.com, это веб-сайт, который предназначен для перечисления всех IP-адресов.IP Deny Manager - это утилита, доступная в большинстве хостинговых служб, использующих C-Panel.

Хотя это может показаться дотошным, я намерен скопировать каждый диапазон IP-адресов для каждой страны в ЕС и вставить его в IP Deny.Инструмент менеджера от C-Panel.

Я не уверен, что это лучшее техническое решение для этого, но это лучшее, что я мог придумать.

0 голосов
/ 06 июля 2018

Для тех, кто не уверен или не может получить доступ и изменить конфигурации сервера, для этого также существует простой плагин, который может быть намного проще для многих людей реализовать.Вы просто добавляете тег 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 голосов
/ 24 июля 2018

Несмотря на EU GDPR, помните, что юридическая юрисдикция суда будет той, которая указана в вашем соглашении «Условия использования» вашего сайта (или должно быть так или иначе).Что важно в законе, так это то, что владелец сайта приложил «добросовестные усилия», чтобы запретить сайт в этих странах-членах.

Учитывая, что ниже приведена многократно используемая функция PHP, которая использует 'ipAPI -api.com для возврата данных о местоположении на IP-адрес и сравнения его с белым списком текущих стран-членов ЕС.Белый список легко поддерживать, и это хорошо, поскольку страны, входящие и выходящие из ЕС, находятся в постоянном движении.Белый список был составлен 24 июля 1018 года, данные которого были проверены между официальным сайтом ЕС и Википедией.API «ip-api.com» является бесплатным для личного использования (контакт для коммерческого использования), а также может быть запущен с вашего локального сервера, без регистрации или требования домена.

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
}

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

Эта функция может быть легко адаптирована для работы со многими другими IP-адресами и API определения местоположения, которые возвращают ответ JSON.Его также можно легко адаптировать как белый список «разрешено только», а не как «белый» список запретов.

Надеюсь, это поможет!

0 голосов
/ 24 мая 2018

Прежде всего, вероятно, лучше сначала прочитать о законных интересах - 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.

Установите базу данных GeoIP для nginx:

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 {} блока отключите ведение журнала пользователей из ЕС и верните 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...