С 1 июля 2017 года существенно ужесточена административная ответственность за нарушения при взаимодействии с персональными данными физических лиц.
Если вы владелец сайта, то вы вероятно уже знакомы с нашими
Мы надеемся, что вы уже ознакомлены с законом и ищете техническую информацию.
Данная статья расскажет, что для разработчика решений и компонентов в продукте есть инструменты для помощи в соответствии закону.
Каждая форма, которая собирает, к примеру, имя, фамилию, email или телефон, должна запрашивать согласие пользователя на обработку персональных данных.
Мы в обновлении главного модуля 17.0.9 выпустили набор инструментов, который поможет вам соответствовать закону ФЗ-152 о персональных данных.
Начну с того, что в административном разделе в меню появился новый пункт:
Настройки -> Настройки продукта -> Соглашения
В нем вы можете создать новое соглашение для запроса согласия на обработку персональных данных, используя стандартный текст, который мы также включили в обновление.
Мы рассмотрим как включить поддержку соглашений в ваших компонентах на примере компонента подписки на рассылку sender.subscribe.
1. Выбор.
Сделаем в параметрах компонента выбор соглашения для вывода.
Для этого в файле параметров вашего компонента .parameters.php достаточно объявить параметр "USER_CONSENT" => array() и появится раздел с параметрами настройки:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); $arComponentParameters = array( "GROUPS" => array( ), "PARAMETERS" => array( "AJAX_MODE" => array(), "USER_CONSENT" => array(), ) ); |
Теперь в настройках компонента появились вот такие настройки:
2. Вывод в форме.
Для вывода нужно использовать компонент main.userconsent.request.
Он выводит чекбокс с подписью, по нажатию на которую выводится окно с текстом соглашения.
Окно с текстом адаптивное и уже сделано и под мобильные устройства.
Также, компонент умеет сохранять полученное согласие.
Само согласие будет в списке, показываемым в по клику в пункте "Полученные согласия" в контекстом меню соглашения на списке.
Компонент main.userconsent.request нужно подключить в шаблоне вашего компонента перед кнопкой отправки формы.
Есть два вида форм:
- один стандартная get/post отправка формы с событием submit;
- отправка через ajax и иные механизмы, реализованные в js, то есть без события submit у формы.
Для них нужно по разному использовать компонент.
1) Простая форма с событием submit.
Подключаем компонент main.userconsent.request перед кнопкой отправки формы
<fo rm method="POST"> <input name="EMAIL" placeholder="Email"> <input name="PHONE" placeholder="Телефон"> <input name="NAME" placeholder="Имя"> <br> <?if ($arParams['USER_CONSENT'] == 'Y'):?> <?$APPLICATION->IncludeComponent( "bitrix:main.userconsent.request", "", array( "ID" => $arParams["USER_CONSENT_ID"], "IS_CHECKED" => $arParams["USER_CONSENT_IS_CHECKED"], "AUTO_SAVE" => "Y", "IS_LOADED" => $arParams["USER_CONSENT_IS_LOADED"], "REPLACE" => array( 'button_caption' => 'Подписаться!', 'fields' => array('Email', 'Телефон', 'Имя') ), ) );?> <?endif;?> <input type="submit" name="subscribe" value="Подписаться!"> </form> |
Указанные в примере параметры $arParams появятся в шаблоне вашего компонента при наличии
в .parameters.php блока "USER_CONSENT" => array()
В параметре REPLACE передается
- button_caption, название кнопки отправки формы;
- fields, массив названий полей, которые попадут в текст соглашения.
2) Форма без события submit(ajax и пр).
В компонент нужно передать в параметре SUBMIT_EVENT_NAME название события, при котором появится окно запроса согласия.
Далее, нужно добавить обработчик события принятия соглашения.
Если обработчик поймает событие - значит, согласие получено и можно отправлять форму/данные или выполнять какое-то действие.
<div id="my_container"> <input type="text" placeholder="Электронный адрес" name="EMAIL"> <input type="submit" id="fire_event" value="Отправить"> <br> <?if ($arParams['USER_CONSENT'] == 'Y'):?> <?$APPLICATION->IncludeComponent( "bitrix:main.userconsent.request", "", array( 'ID' => $arParams["USER_CONSENT_ID"], "IS_CHECKED" => $arParams["USER_CONSENT_IS_CHECKED"], "IS_LOADED" => "Y", "AUTO_SAVE" => "N", 'SUBMIT_EVENT_NAME' => 'my-event-name', 'REPLACE' => array( 'button_caption' => 'Отправить', 'fields' => array('Электронный адрес') ), ) );?> <?endif;?> </div> <sc ript type="text/javascript"> BX.ready(function () { var submitBtn = BX('fire_event'); BX.bind(submitBtn, 'click', function(){ BX.onCustomEvent('my-event-name', []); }); if (!BX.UserConsent) { return; } var control = BX.UserConsent.load(BX('my_container')); if (!control) { return; } BX.addCustomEvent( control, BX.UserConsent.events.save, function (data) { console.log('js event:', 'save', data); // успешно! // отправляем ajax // или другие действия } ); }); </sc ript> |
3. Сохранение согласия.
В параметрах компонента есть параметр AUTO_SAVE.
Если его значение равно Y, то согласие автоматически сохраняется компонентом.
Если вам нужно сохранить согласие самим, то передайте значение N.
А для ручного добавления согласия вызовите следующий код:
\Bitrix\Main\UserConsent\Consent::addByContext( $arParams["USER_CONSENT_ID"] ); |
Теперь у вас есть инструмент, с помощью которого вы можете быстро привести свои компоненты в соответствие закону, а также помочь соответствовать вашим клиентам.
Есть еще то, что не описал:
- добавление своего источника данных;
- при просмотре согласий вывод связи со своей сущностью;
- кейс использования в виде ссылок;
- дополнительные компоненты выбора и просмотра.
Если вам эта тема интересна - пишите в комментариях, добавим в статью доп информацию.
.
Вы как-то решили задачу вывода текста согласия на отдельной странице?
Есть ли стандартный способ сохранения информации по пользователям, кто проставил галку, а кто нет?
Например, у магазина 1000 клиентов, которые уже внесли свои данные без уведомления по новому закону.
Ведь теперь их всех нужно удалить из базы, если согласие не получено? Или как?
Т.о. либо нужно всех старых клиентов удалить, и предлагать им переоформиться на сайте на новых условиях, либо делать рассылку (1000 писем - это отдельная тема) и по её итогам кого-то удалять, кого-то нет.
В любом случае, полезно было бы иметь в базе в полях пользователей "Дату согласия". Если она заполнена, значит пользователь соглашался на обработку своих персональных данных.
Это не говоря о том, что если сайт собирает ТОЛЬКО email - это вообще не ПД ни разу.
Не вводите людей в заблуждение. Допишите хотя бы, что кроме этой "галочки" им необходимо изучить законодательство, отправить уведомление, подготовить информационную систему, написать 30+ документов. А то какая-то профанация выходит. Согласие на обработку - это только малая (самая) часть системы защиты ПД.
Но статья не является профанацией.
Предполагается, что читающий ознакомлен с законом и ищет технические решения.
Эта статья предназначена разработчикам и находится в разделе "Разработчикам" и решает технические вопросы.
Нигде в статье не заявлено, что описанное достаточно для полного соответствия.
Но сказано, что это помощь в соответствии требованиям закона.
В сгенерированных документах я нашёл некоторые неточности, но это не сравнимо по трудоёмкости с попытками найти готовые шаблоны в интернете, найти юристов, которые бы сами разбирались в вопросах интернет и могли бы что-то подсказать
У меня-то образование профильное, я их день через день сижу штампую. Надо бы пошире распространить ресурс)
В запущенных случаях для особых категорий ПД требуется жестко либо подпись на бумаге, либо квалифицированная электронная подпись (согласно закону об ЭП).
А смогут ли простые смертные, не владеющие знаниями Битрикс framework все описанное выше осуществить?
Возможно во вступлении нужно было на это сделать акцент.
Для простых смертных у нас описано на основном сайте
Тоже кодить каждую дырку или есть тубмлер, который включает этот функционал по ФЗ-152 в типовых решениях?
можно только Форму подписки на рассылку.
при оформлении заказа, есть настройка "Согласие пользоватея", но установка этих полей никак не влияет на процесс оформления заказа - галочка "согласен" не появляется.
/personal/order/
1) В каталоге товаров есть отзывы и комментарии (включая фейсбучные-вконтактные комменты)
в компоненте нет пункта настройки "Согласие пользоватея"
Либо хорошо спрятано.
2) на странице персональных данных пользователя
/personal/private/
в компонентах нет настроек о согласии
3) на странице профиля на форуме
/forum/user/1/edit/
в компонентах нет настроек о согласии
4) Блоги - нет настроек о согласии
ни в профиле, ни в комментах
5) Форма обратной связиbitrix:main.feedback
нет настройки "согласия"
Тестировала на демосайте со всеми обновлениями .
записала на видео,
Буду рада, если ошибаюсь и просто невнимательно ищу.
Подскажите как стандартным способом без кодирования
настроить "современный интернет-магазин" под ФЗ-152
в комментах каталога товаров, в блогах, на форуме, форме обратной связи
Настроили в Настройки -> Настройки продукта -> Соглашения (выбрали пока стандартное)
Настроили компонент sale.order.ajax на новое соглашение
После заполнения полей появилось:
Если галочка не поставлена:
с остальным пока тоже разбираемся
2) Настроили компонент sale.order.ajax на новое соглашение
скрин
3) После заполнения полей ничего НЕ появилось:
Демосайт со всеми обновлениями
В случае проблем, пишите в техподдержку.
результата ноль
Но включать нужно вручную. Подробнее здесь
А оформление заказа в обновлении от 28.06 прилетело.
У меня установлен последний
ПС. про "вручную" установить вопросов нет, было бы где.
было 09.02.2017
17.0.0(09.02.2017) (beta)
тут смысл в том что в в дефолтовом компоненте в папке /bitrix/components/ специалистами 1С-Битрикс был допилен конкретный компонент.
В eshop не вносились изменения, поэтому все вручную там, я собственно об это и задавал вопрос.
Многие же дефолтовый магазин юзают бесплатный
саппорт признал ошибку.
Категория: Ошибки.
Номер обращения в разработку: 88279
уже выпустили исправление 17.0.22
Однако, оно касается ТОЛЬКО sale.order.ajаx
Про остальные компоненты молчок полный.
ПС. особенно смешно, что в 17.0.22 остался без исправления main.feedback,
а это именно та форма обратной связи, которую в первую очередь на сайтах проверяет роскомнадзор ))
Мы неоднократно спрашивали в поддержке, что планирует Битрикс. Ничего.
но чудо все же состоялось....
в "ночь под рождество"
Конечно, 1 июля в субботу все ломанулись обновлять. Да и дата поста то... под конец дня.
Зато успели. Отчитались.
От меня пожелание
Коллеги из Битрикс. Давайте к таким вещам относиться крайне ответственно и заранее оповещать о планах.
А мы будем терпеливо ждать, а не думать а с какого перепуга Битрикс сидит и ничего не делает
Оно туда лепит названия вообще всех свойств заказа.
например у нас выдало такое:
Настоящее Согласие выдано мною на обработку следующих персональных данных:
- Фамилия;
- Название организации;
- Оплатить баллами;
- Начислено бонусов по заказу;
- Оплатить баллами;
- Начислено бонусов по заказу;
- Серия и номер паспорта;
- Имя;
- Контактное лицо;
- Отчество;
- Email;
- Email;
- Телефон/факс;
- Телефон;
- Местоположение;
- Станция метро;
- Местоположение;
- Станция метро;
- Индекс;
- Индекс;
- Адрес;
- Почтовый адрес;
- ИНН;
- КПП;
- Расчетный счет;
- БИК;
- Банк;
- Кор. счет;
- Юр. адрес;
- Телефон организации.
При том, что для физ. и юр. лиц, а так же разных служб доставки запрашиваются разные данные, плюс есть свойства, которые не показываются пользователю
- добавить своей источник данных;
- при просмотре согласий вывод связи со своей сущностью;
- кейс использования в виде ссылок;
- посмотреть дополнительные компоненты выбора и просмотра.
Если я правильно понимаю, то для любой формы обратной связи требуется запрос согласия.
Но форму может заполнять человек, не являющийся пользователем сайта.
Если в форму вносится имя и фамилия, то у незарегистрированных пользователей они не сохраняются.
В какую сторону копать?
Вот ссылки по теме
Соответственно, событие "обработка персональных данных" происходит как только другой человек (физическое лицо) отправил вам на сайт любые данные, которые закон может посчитать персональными: ФИО, e-mail, IP, Куки.
В законе очень неясно всё это прописано и поэтому суд может посчитать даже отправку IP пользователя отправкой Вам (Вашему сайту) персональных данных.
Поэтому неважно, зарегистрирован пользователь или нет, как только он что-то вводит на сайт, что похоже на персональные данные, нужно обязательно от него получать согласие на их обработку.
И даже если Вы не сохранили/тут же удалили эти данные - это тоже есть обработка и на неё нужно получать согласие.
Как сохранить ФИО незарегистрированного пользователя, которые этот пользователь вносит в форму обратной связи?
Всё зависит от того, как работает Ваша форма, какой используете компонент.
Соответственно при обработке данных Вам необходимо их сохранять в инфоблок, если вы не используете компоненты типа "Веб-формы"
Простейшая реализация такой логики описана тут:
или тут
Итого. У нас на главной странице может быть куча форм (всплывающих) собирающих разные данные. Заказ звонка, заявка, подписка на рассылки. Во всех формах разный набор данных может быть.
А система сохраняет IP (который может быть динамическим), время и url страницы, на которой была галка поставлена.
Вот и получается, что мы не можем узнать, что, во-первых, это именно Вася Иванов дал согласие на обработку своих данных. А во-вторых, Вася разрешил обработку своих фио и email, но не давал согласия на обработку своего телефона. Ну т.е. чисто технически телефон может быть получен в ходе дальнейшей переписки с Оператором и успешно слит третьим лицам. А оператор скажет, что вот у меня стоит галочка, что на главной странице этот человек согласился на обработку всего и вся (хотя форм на главной несколько).
Поэтому, на мой взгляд, хранение согласий реализовано на два с минусом.
выходим из положения так:
1) сохранаять согласия вручную. $iConsentId = \Bitrix\Main\UserConsent\Consent::addByContext($arParams["USER_CONSENT_ID"]);
2) Если данные о пользователей сохраняются в бд (я сейчас НЕ о пользоватльях который в b_user), то в эту таблицу добавить поле user_consent_id и туда склаыдывать $iConsentId.
3) Если данные НЕ сохраняются в дб, а, например, просто уходят в писме на почту менеджера(что так же подпадает под действие закона), то в футере письма выводить что-то вроде "Согласие пользователя получено: дд.мм.ггг , $iConsentId"
как то так решили. может и не претендует на "лучшее" и "изящное" решение.
Закон N 152-фз обратной силы, конечно, не имеет, но в уточнениях к закону речь идёт о штрафах. Сам закон принят уже давно, ещё в 2006 году.
Соответственно, если ранее пользователи делали заказы, подписки и регистрации без галочки, получается, сайт хранит и обрабатывает их данные без их согласия, за что сейчас большой штраф
Но ответ абсолютно однозначный. Согласие должно быть получено со всех.
Я пока ограничиваюсь тем, что для авторизованного пользователя в личном кабинете делаю такую галочку и в заказе. Т.е. даже если авторизованный пользователь зайдёт на сайт, захочет что-то изменить в ЛК или сделать заказ, от галочки ему не отвертеться.
У нас в стране физ. лицам и юр. лицам без специального разрешения запрещено заниматься "слежением" за людьми.
Т,е. даже если у нас с вами есть ФИО, телефон и т.д., для нас это просто набор данных, мы не можем "установить", т.е. выяснить что-то ещё о человеке - это и так запрещено законом.
Если же есть соответствующие полномочия, то IP или e-mail, который пользователь получает через браузер или почтовую программу позволят очень точно установить адрес и другие данные человека.
Также посмотрите начало статьи - в примере с подпиской, где только e-mail, Битрикс уже предлагает ставить галочку, т.ч. один e-mail тоже скорее всего персональные данные
А e-mail вида IvanovAB1976@mail.ru + адрес доставки не позволяют разве однозначно определить, кто является получателем?
К сожалению, мой ответ - "it depends". От позиции РКН, от конкретного случая, от конкретного субъекта, от конкретной базы - от всего зависит. В моей практике, в том числе судебной - один голый email без ничего не считается ПД. Но если РКН захочет, он и email назовет таким.
Опять же, из практики - ФИО это 100% святая корова, ПД по умолчанию. Благо и в законе они обозначены. Email - в отрыве от остального очень редко. В совокупности - сразу да. IP - совсем недавно стал трактоваться судами, как ПД, практика не наработана, зависит от судьи и участвующих юристов. Адрес доставки вообще ни к какому лицу не привязан, это не ПД. Даже когда заказчик цветов на сайте доставки цветов заказывает букет своей возлюбленной и указывает ее адрес и имя - это не ПД, это данные для исполнения договора заказа. Но при правильной аргументации их можно как отнести к ПД, так и вывести из-под определения.
Все очень плохо =)
Обезличивание. Он немного муторный по реализации, но спасает от всего.
С моей точки зрения и одно фото - это ПД. Сделав поиск по фото в поисковике можно получить ссылку на социальный профиль пользователя - а там и ФИО, и телефон может быть и ещё много чего.
Т.е. даже ставить видеокамеру в магазине, на которой могут быть засняты лица людей без их согласия - незаконно, это сбор ПД.
По IP в подавляющем большинстве случаев нет точной информации об адресе. Всё с точностью до города/района, где действует провайдер. При этом по логам провайдера, но только НЕ НАМ, а специальным органам, можно легко установить, конкретный адрес с точностью до квартиры. Т.е. IP эквивалентен госномеру машины - за рулём, конечно, может сидеть кто угодно, но круг лиц сужается до 1-2.
Логику это и к интернет- магазину можно применить. До какого-то момента не являются и введённые в форму данные пользователем. Пока менджер не прочтёт заявку, никто не использует для целей установления личности (если это конечно не автоматический сервис).
Создание нового шаблона, для этой приблуды также приводит в неработоспособность этот компонент.
Что же все как криво-то у вас, простейшая хрень, а сделать так чтобы сразу нормально заработало, не можете...
Как включить и настроить в стандартной форме регистрации system.auth.registration ?
положил файл с .parameters.php
с содержимым как в примере - параметр не выводится.
2) почему в стандартных компонентах bitrix нет из коробки этого и когда будет?
В понедельник в отпуск, клиенты в панике... В мае писала в техподдержку про эти галочки при оформлении подписки, ответили, что "не планируем, если нужно - сами делайте". То есть пока гром не грянет... Вроде как спасибо, только не фига не понятно, что можно сделать за 3 оставшихся дня с такими косяками.
Важно: все поля по сбору данных должны быть обоснованы. Например, телефон для смс-рассылки, адрес для доставки товара. Никаких полей «на всякий случай».
Кто-то пишет в форум/блог, кто-то делает заказы в интернет-магазине, кто-то только подписался на новости или отсутствующий товар, а соглашение, получается одно?
Этого функционала нет и не собираются делать.
Потому что:
(цитата с 152fz.net)
"После установки и настройки компонента, пользовательское соглашение автоматически будет отображено во всех разделах, где вы запрашиваете данные:
в подписках на рассылки
на странице оформления заказа
в регистрации на сайте или в интернет-магазине
внутри всех подключенных форм Битрикс24"
Как видите, ни форума, ни блогов, ни комментов в каталоге товаров в списке нет, при этом " клиенты готовы к ужесточению закона 152-ФЗ и не получат штраф."
Битрикс24 не пользуемся.
Остальное придется допиливать, причем потом при каждом обновлении проверять, не сломалось ли.
Форму регистрации уже допилил...
Включаю без всех условий
<?$APPLICATION->IncludeComponent(
"bitrix:main.userconsent.request",
Компонент есть, но ничего не выводится и никаких ошибок.
Какой нибудь
<?$APPLICATION->IncludeComponent(
"bitrix:search.form",
вставляет код, main.userconsent.request лежит рядом, но не работает ((
Куда можно копать?
$arTemplateParameters = array(
"USER_CONSENT" => array(),
);
но в select поля "соглашение" option с неправильными значениями
<option value="0">(не выбрано)</option>
<option value="1">тест</option>
<option value="2">Форма обратной связи</option>
<option value="3">Регистрация</option>
должно быть
<option value="0">(не выбрано)</option>
<option value="1">Регистрация</option>
<option value="2">Форма обратной связи</option>
<option value="3">тест</option>
Как задать правильные значения?
как при просмотре согласий выводить связи со своей сущностью?
Вопрос ещё в том, нужно ли указывать где-то в документах, что в сторонние сервисы, через которые происходит авторизация, передаются какие-то ПД?
Все действия сделаны, как в примере с стр
Шаблон bitrix.eshop
Все обновления в том числе и бета 17.0.22 установлены
Галочка в компоненте bitrix:sale.order.ajax Запрашивать согласие: поставлена
И ничего не работает,никакого соглашения не выводиться, мало того перестает работать кнопка Оформить заказ (
Если убираешь Запрашивать согласие,кнопка возвращается в рабочее состояние.
Тех. поддержка ответила еще 3 июля, ждите обновлений, потом прислала установите 17.0.22 установила и все равно не работает
Что делать?
Если кому либо нужно просто вывести текст соглашения вот код:
Где "1" это id соглашения.
Подключили компонент в форму обратной связи, все работает и выводится, но если включить режим ajax в компоненте обратной связи, согласие на обработку данных перестает корректно работать. Пробовали и первым, и вторым способом подключать. В первом случае просто висит форма с окошком "Загрузка", если не поставить галочку согласен, во втором (где со скриптом), загрузка не висит, но письмо уходит, даже если согласие не дано.
Подскажите, может кто столкнулся с этой проблемой тоже? Заранее спасибо!
ЗЫ ан нет, работает