GDPR налагает штрафы в миллион долларов за нарушения правил «кто знает, что», что является безумием. Есть ли в PHP простое бесплатное решение для моего личного сайта? Я не необходимость для отслеживания людей, но я хотел бы, по крайней мере, иметь представление о том, кто посещает, например, Я хочу знать браузер, ОС, организацию. Я, конечно, открыт для блокировки всех посетителей ЕС но Я знаю, что многие настраивают свой браузер на английский, поэтому блокировка по языку неэффективна.
Будучи не юристом и хранителем простого веб-сайта, который не зарабатывает деньги, я признаю, что никогда не буду полностью понимать GDPR и никогда не буду иметь средств, чтобы быть в курсе его изменений по мере их изменения. Только крупные компании могут позволить себе потратить необходимое количество времени, сил и денег. Поэтому мне нужен простой механизм, чтобы блокировать пользователей из ЕС, иначе мне придется придерживаться консервативного подхода: не собирать данные о посетителях.
Этот закон о ВВПР угрожает людям экономической смертью за несоблюдение, но подавляющее большинство людей не имеют ни малейшего представления, чего на самом деле требуют его расплывчатые правила. Это закон, который поддерживает большие компании с ресурсами и является атакой на небольшие компании и частных лиц.
Прежде всего, вероятно, лучше сначала прочитать о законных интересах — 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
Для тех, кто не уверен или не может получить доступ и изменить конфигурации сервера, для этого также существует простой плагин, который может быть намного проще для многих людей реализовать. Вы просто добавляете тег 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
Несмотря на EUR GDPR, помните, что юридическая юрисдикция суда будет соответствовать той, которая указана на вашем веб-сайте в соответствии с соглашением «Условия использования» (или должно быть так или иначе). Что важно в законе, так это то, что владелец сайта приложил «добросовестные усилия», чтобы запретить сайт в этих странах-членах.
Учитывая это, ниже приведена многократно используемая функция PHP, которая использует API «ip-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: <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
}
Функция также выполняет перекрестную проверку возвращенных данных местоположения в том же цикле, поэтому, если в одной переменной была опечатка, она все равно находила бы местоположение, используя другую переменную. Для обоих быть неправым вряд ли.
Эта функция может быть легко адаптирована для работы со многими другими API для определения местоположения, которые возвращают ответ JSON. Его также можно легко адаптировать как белый список «разрешено только», а не как «запрещенный» белый список.
Надеюсь это поможет!
Это важная проблема, хотя и не является непосредственно вопросом программирования, но важно знать о том, являетесь ли вы программистом, так как большинство программ в наши дни требуют отправки данных через Интернет. Я довольно много изучал GDPR, и самое большое заблуждение, которое я вижу на форумах, заключается в том, что это легальное дело касается защиты конфиденциальности граждан ЕС, посещающих веб-сайты. Неправильно. Снова прочитайте GDPR.
GDPR — это передача данных PII через Интернет любыми способами, что противоречит законам, действующим уже много лет в одной только Америке. Вот лишь один из множества примеров, которые я могу вам привести в отношении невыполнимого GDPR.
Скажем, вы гражданин США, и вы только что получили электронное письмо от гражданина ЕС. Blam! Вы уже нарушаете GDPR. Зачем? Потому что все электронные письма имеют заголовки, как и любой интернет-запрос, и в информации заголовка находится исходный IP-адрес и полный след его маршрута к почтовым серверам ваших почтовых провайдеров. Согласно федеральному законодательству США, все электронные письма должны архивироваться поставщиками услуг электронной почты на неопределенный срок, что нарушает закон GDPR, чтобы соответствовать федеральному законодательству США, так как информация заголовка электронной почты является частью и, следовательно, не в соответствии с законодательством США о том, что требуется от электронной почты для архивации.
Не только это !, но вы понимаете, что фактический получатель электронного письма также будет нарушать GDPR, если он захочет лично сохранить копию этого электронного письма, а не уничтожить его сразу после прочтения. Независимо от других только что описанных обстоятельств, только гражданин ЕС, отправляющий это электронное письмо гражданину США, автоматически помещает этого гражданина США в нарушение GDPR … и без него даже не нужно открывать электронное письмо, так как данные трассировки IP уже были получен и записан поставщиком почтовых услуг еще до того, как отправленное письмо достигнет почтового ящика получателя.
Да … и это только начало этого безумного, чрезмерно рьяного, чрезмерно идеалистического и чрезмерного навязывания прав гражданам, не входящим в ЕС, в своих странах.
По сути, граждане ЕС требуют от всего мира соблюдения законов, которые, по их мнению, являются лучшими для остального мира, и при этом не признают права граждан страны, не входящей в ЕС, принимать свои собственные соответствующие законы, за которые проголосовали граждане своей нации через свой собственный законодательный процесс правительства.
Это означает, что GDPR по своей природе является не чем иным, как дискриминацией. В США дискриминация противоречит закону, поэтому соблюдение GDPR должно быть дискриминационным по отношению к моим гражданам, не входящим в ЕС, поэтому я нарушаю законы своих стран, чтобы иметь возможность соблюдать GDPR.
Теперь в ответ на оригинальный ОП. Что я делаю в этих обстоятельствах, так это «оборачиваю» свой веб-сайт. По достижении веб-сайта посетителю отображается сообщение о том, что если он является гражданином ЕС, ему запрещен доступ к веб-сайту, а также две кнопки «Я гражданин ЕС» и «Я не гражданин ЕС». На данный момент у меня еще не было доступа к программированию или сохранения IP-адреса посетителей, и единственными доступными действиями являются одна из двух кнопок.
Если посетитель нажимает кнопку «Я гражданин ЕС», посетитель немедленно отправляется на страницу, с которой он пришел. Если они нажмут кнопку «Я не гражданин ЕС», им будет разрешен доступ к веб-сайту. Если они в любом случае лгут, чтобы получить доступ к веб-сайту, то они совершают умышленный акт мошенничества, и только этим действием они отказываются от любых и всех прав, которыми они могли обладать в рамках GDPR, и теперь их ИС сохраняется за законными требования относительно их предупрежденного и запрещенного доступа к веб-сайту, а также для обычного использования безопасности сервера и анализа веб-сайта.
Кроме того, убедитесь, что не загружаете какие-либо сторонние сервисы до тех пор, пока они не подтвердят, что они не являются гражданами ЕС, так как эти сторонние сервисы также собирают данные о вашем посетителе, которые все еще могут рассматриваться как нарушение GDPR вами, а не третье лицо, если оно загружено на начальную страницу сообщения до того, как посетитель объявил о гражданстве посетителя.
В настоящее время я бы сказал, что метод «click-wrap» — это единственный способ, которым владелец небольшого веб-сайта может защитить себя от любых претензий GDPR против них. GDPR не предоставляет защиту тем гражданским лицам ЕС, которые получают доступ к вашему веб-сайту посредством мошенничества.