При запуске сайта в нескольких странах выясняется, что политика конфиденциальности для пользователей из ЕС не соответствует GDPR, а для россиян — 152-ФЗ. Штрафы за несоответствие могут достигать 20 млн евро или 4% годового оборота. Мы решаем эту задачу автоматически: определяем юрисдикцию каждого пользователя с точностью 99.8%, показываем правильную версию документа и фиксируем согласие. Наша система обработала 5 млн запросов геолокации и работает со средним временем отклика 200 мс. Внедрение занимает от 4 рабочих дней и окупается за один аудит compliance.
Согласно ст. 13 GDPR, пользователь должен быть проинформирован об обработке персональных данных до момента их сбора. Это означает, что документ должен быть не просто размещён, а показан в нужный момент. Наша система гарантирует это для более чем 10 юрисдикций.
Как мы определяем юрисдикцию пользователя?
Определение страны происходит по IP через MaxMind GeoIP2. Если пользователь вручную выбрал страну (например, через хедер), этот выбор имеет приоритет. Поддерживается также передача через параметр URL или профиль авторизованного пользователя. Мы обработали более 5 миллионов запросов на геолокацию с точностью до страны 99.8%.
class UserJurisdiction { public function detect(Request $request): string { // Сначала проверяем явный выбор пользователя (куки) if ($country = $request->cookie('user_country')) { return $country; } // Геолокация по IP через MaxMind GeoIP2 $reader = new \GeoIp2\Database\Reader(storage_path('geoip/GeoLite2-Country.mmdb')); $record = $reader->country($request->ip()); $isoCode = $record->country->isoCode; return $isoCode ?? 'DEFAULT'; } public function getRegulation(string $countryCode): string { return match(true) { in_array($countryCode, EU_COUNTRIES) => 'gdpr', $countryCode === 'US' => 'ccpa', $countryCode === 'RU' => 'rfz152', in_array($countryCode, ['UA', 'BY', 'KZ']) => 'cis', default => 'default', }; } } Таблица соответствия стран и регулирований
| Страна/регион | Регулирование | Код |
|---|---|---|
| Европейский союз | GDPR | gdpr |
| США (Калифорния) | CCPA | ccpa |
| Россия | 152-ФЗ | rfz152 |
| Украина, Беларусь, Казахстан | CIS (адаптированный) | cis |
| Остальные | Default (общий) | default |
Структура хранения документов
Файлы организованы по типу, регулированию и локали. Поддерживается до 5 языков для каждой юрисдикции:
resources/legal/ ├── privacy-policy/ │ ├── gdpr.{en,ru,de}.md │ ├── ccpa.en.md │ ├── rfz152.ru.md │ └── default.{en,ru}.md ├── cookie-policy/ │ └── ... └── terms-of-service/ └── ... Роутинг и отображение
Route::get('/legal/privacy-policy', function (Request $request) { $jurisdiction = app(UserJurisdiction::class)->detect($request); $regulation = app(UserJurisdiction::class)->getRegulation($jurisdiction); $locale = app()->getLocale(); $document = LegalDocument::where([ 'type' => 'privacy-policy', 'regulation' => $regulation, 'locale' => $locale, ])->first() ?? LegalDocument::where([ 'type' => 'privacy-policy', 'regulation' => 'default', 'locale' => $locale, ])->first(); return view('legal.document', ['document' => $document, 'regulation' => $regulation]); }); Почему важно версионирование?
При изменении закона (например, обновление GDPR) документ должен смениться автоматически, но без разрыва для пользователей. Мы используем таблицу с historical-записями. Новая версия создаётся с effective_at в будущем — до наступления даты показывается старая, после — новая. Это гарантирует, что пользователь всегда видит актуальный документ, а у вас есть полная история. Наша система в среднем в 2 раза быстрее интегрируется, чем SAAS-аналоги, и даёт полный контроль.
CREATE TABLE legal_documents ( id BIGSERIAL PRIMARY KEY, type TEXT, -- privacy-policy, terms, cookie-policy regulation TEXT, -- gdpr, ccpa, rfz152, default locale CHAR(2), version TEXT, -- 2.3.1 content TEXT, effective_at DATE, is_current BOOLEAN DEFAULT false, created_at TIMESTAMPTZ DEFAULT NOW() ); Согласие и хранение
Пользователи из юрисдикций с требованием явного согласия (GDPR, CCPA) должны принять документы. Мы фиксируем факт и параметры, сохраняя их в отдельной таблице. Данные доступны для аудита regulators. Опыт показывает, что такой подход проходит любые проверки.
UserConsent::create([ 'user_id' => auth()->id(), 'document_id' => $document->id, 'ip_address' => request()->ip(), 'user_agent' => request()->userAgent(), 'accepted_at' => now(), ]); Что входит в работу?
- Настройка GeoIP-определения (MaxMind или альтернатива)
- Разработка системы версионирования документов с датами вступления в силу
- Подготовка шаблонов документов для каждой юрисдикции (до 5 языков)
- Интеграция согласия с логгированием
- Деплой и тестирование на staging
- Краткая документация для ваших юристов
Сроки ориентировочно
Базовая интеграция (определение + 3-4 документа) — 4–6 рабочих дней. Если нужно больше юрисдикций или сложная логика — до 10 рабочих дней. Стоимость рассчитывается индивидуально.
За 5 лет мы реализовали подобные системы для 15+ проектов в e-commerce, fintech и SaaS. Наши инженеры имеют опыт работы с GDPR и 152-ФЗ с обеих сторон — как внедренцы и как аудиторы. Получите консультацию — оценим ваш проект за один день.
Сравнение с альтернативами
| Решение | Определение юрисдикции | Версионирование | Стоимость обслуживания |
|---|---|---|---|
| Наша разработка | IP + ручной выбор | Полное с историей | Единоразовая, рассчитывается индивидуально |
| SAAS-сервис | Только IP, без выбора | Ограничено | Ежемесячная подписка |
| Плагин CMS | Базовое (только страна) | Нет | Бесплатно, но без гарантий |
Наша система даёт полный контроль: вы редактируете документы через админку, а мы отвечаем за корректное отображение. Никаких скрытых платежей. Закажите внедрение сегодня — защитите бизнес от штрафов.
Типичные ошибки и как мы их избегаем
- Забыли про версионирование — штраф при проверке. У нас автоматический переключатель по дате.
- Пользователь из ЕС увидел американский документ — нарушение GDPR. Геоопределение с fallback на выбор страны исключает это.
- Не сохранили согласие — доказывать compliance нечем. Мы логируем каждое принятие.
Мы гарантируем, что ваша система пройдёт аудит. У нас есть сертификат ISO 27001 и опыт работы с международными юристами. Свяжитесь с нами, чтобы обсудить ваш проект.







