Задать вопрос

Как запретить пользователям из России обращаться к определенным функциям сервера?

В связи с изменением в законодательстве хочется подготовиться и запретить пользователям авторизоваться через Google на моём сервисе, но для этого нужно определить что он находится в России.

Как я посмотрел браузер не отправляет в запросе местоположение пользователя, т.е. единственный способ это как-то по IP определить страну пользователя. Как я понял четкой связи между IP--физическое местоположение нет, но у провайдеров есть определенный зарезервированный за ними пул адрессов (как понимаю постоянно обновляющийся).

Т.е. единственный выход выходит сервисы которые каким-то образом ассоциируют IP со страной/регионом/городом и делятся этой информацией по подписке, либо предоставляют готовую БД, но у неё проблема в потере актуальности со временем, что в будущем может стать лазейкой:
По этому ip из России можно авторизоваться, с вас 300тыс рублей штраф.

Я знаю что сейчас ответственность не предусмотрена, но в будущем уверен будет, и лучше подготовится сейчас.

Каким способом можно реализовать эту систему чтобы она не превращалась в статью расходов и со временем не теряла актуальность?
  • Вопрос задан
  • 6041 просмотр
Подписаться 4 Средний 5 комментариев
Решения вопроса 1
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER

Каким способом можно реализовать эту систему

Спросить. Честно, топорно. Тебе соврали - ну, да, может быть, но косяк не твой. Ты вынужден верить на слово, так как все сервисы геолокации могут показывать неактуальные данные, и кроме того, есть VPN, которые сейчас вовсю применяют как для обхода ограничений РКН, так и для обхода ограничений "IP из РФ/РБ".
Поэтому единственный способ - спросить. (Это примерно то же самое, что с ответом на вопрос "Уже есть 18?". Никто пока не может проверить, правда ли это и все вынуждены полагаться на слово)

P.S. Почему я так выделил слово пока? Потому что время, когда тырнет будет по паспорту (госуслугам, ЕГА, черта лысого) и без того было не за горами, а бездумная VPN-изация его тащит за собой, как сержант-старослужащий первогодка на марш-броске - цепко и безжалостно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
ФЗ № 406 от 31.07.2023:
Владелец сайта и (или) страницы сайта в сети "Интернет", и (или) информационной системы, и (или) программы для электронных вычислительных машин, являющийся российским юридическим лицом или гражданином Российской Федерации и осуществляющий свою деятельность в сети "Интернет" на территории Российской Федерации, в случае, если доступ к информации, размещенной на его сайте и (или) странице сайта в сети "Интернет", и (или) в его информационной системе, и (или) программе для электронных вычислительных машин, предоставляется пользователям, прошедшим авторизацию, обязан проводить ее в отношении пользователей, находящихся на территории Российской Федерации, одним из следующих способов:

- с использованием абонентского номера оператора подвижной радиотелефонной связи в порядке...
- ЕСИА...
- ЕБС...
- с использованием иной информационной системы, обеспечивающей авторизацию пользователей сайтов и (или) страниц сайтов в сети "Интернет"...

Закон обязывает всех владельцев "веб-площадок" (зарегистрированных на территории РФ) с возможность авторизации пользователей (находящихся на территории РФ) производить эту "авторизацию" любым из перечисленных способов.

Тут интересный момент в "находящихся на территории РФ" пользователей. Соответственно, Вы обязаны удостовериться, находится ли пользователь на территории РФ или нет. Варианты определения геолокации пользователя:
- IP-адрес (своя бд, сторонний сервис, WebRTC).
- HTML5 Geolocation API.
- Часовой пояс браузера.
- Геолокация у мобильных устройств.

Но в отношение IP имеется №152-ФЗ, который гласит "персональные данные - любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу (субъекту персональных данных)", а значит IP сюда тоже можно "натянуть на глобус", соответственно, вначале необходимо спросить разрешение на обработку данных о любой геолокации пользователя, а затем, если он разрешит - проверять, "верблюд ли он". Соответственно, если пользователь не разрешит, то Вы не имеете право предоставлять авторизацию, через "иные сервисы".
Т.е. единственный выход выходит сервисы которые каким-то образом ассоциируют IP со страной/регионом/городом и делятся этой информацией по подписке, либо предоставляют готовую БД, но у неё проблема в потере актуальности со временем

Именно, платить в случае не верного определения - Вам.
Ответ написан
Комментировать
@hesy
Самый простой способ, по таймзоне:

function isRussianTimezone() {
    let timezones = [
        "Europe/Moscow",
        "Europe/Astrakhan",
        // ...
    ];
    
    return timezones.includes(
        Intl.DateTimeFormat().resolvedOptions().timeZone
    );
}
Ответ написан
Комментировать
kawabanga
@kawabanga
1) Запрашивать перед входом/авторизацией страну пользователя. Человек не из России? Ок, показываем G авторизацию. Человек может обмануть.
2) Спросить через браузер геолокацию. Почти всегда точно, но и тут человек может обмануть.
3) Узнать по IP город человека. Почти всегда точно. Можно использовать сервисы типа дадаты. Человек может обмануть систему.

Так вот если человек всегда обманет систему, не проще использовать самый простой способ выбора страны?
Ответ написан
Почитал я этот ваш ФЗ.

Если ты, как гражданин России или российская организация, являешься владельцем сервиса, то ты обязан убрать иностранные способы аутентификации в принципе для всех пользователей.

Если сайт не российский, то ты не обязан россиянам запрещать аутентификацию через Гугл и прочие.

А ещё всё ещё нет никакого наказания за нарушение этого закона. Так что пока можно особо не шевелиться по этому поводу - авось ещё какие правки придут.

А вот запретить доступ к отдельным функциям - действительно проще через явный вопрос "из какой вы страны". А если пользователь ещё и деньги тебе платит - можно к региону карточки привязаться.
Ответ написан
Bessome
@Bessome
Администратор Linux, Windows. 1С программист
У Вас в задаче и в законе нет несостыковок. Делаете сайт для РФ, авторизацию для некоторых функций по закону (мини нода на сервере в РФ к основному сайту с копией движка и доступом к основной бд сайта). Просите датацентр обеспечить подключение к этой ноде только клиентов из РФ.
На сайте не из РФ отслеживаете посещения, если подозреваете, что из РФ , то просите авторизоваться по закону РФ. И переводите на мини-ноду соединение.
На основном сайте вне РФ анархия способов авторизаций
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы