Подтверждение e-mail, боты, удаление пользователей
Зачем подтверждать e-mail, защита от ботов без сторонних сервисов, удаление навсегда или анонимизация.
Как портал защищается от ботов, зачем подтверждать e-mail и как навсегда удалить пользователя, не нарушив GCP.
Подтверждение e-mail
- После регистрации приходит письмо с кнопкой «Подтвердить e-mail». Ссылка одноразовая и действует 24 часа; в базе хранится только её хеш.
- Пока адрес не подтверждён, войти нельзя. Если человек потерял письмо, он просто входит со своим паролем: портал отправит новую ссылку (не чаще раза в минуту и не больше пяти в сутки).
- Приглашение в исследование пришло на этот же адрес, поэтому приглашённые подтверждены сразу. Сброс пароля по ссылке из письма тоже подтверждает адрес.
- Владыка портала видит статус «E-mail не подтверждён» и может отметить адрес подтверждённым вручную, если точно знает человека.
- Если почта на сервере не настроена, подтвердить ничего нельзя, поэтому проверка выключается сама; в «Пользователях» и «Настройках» появляется предупреждение.
Защита от ботов
Мы не используем Google reCAPTCHA и Cloudflare: они передают данные посетителей за рубеж (152-ФЗ) и могут отключиться из-за санкций. Вместо них работают проверки, которых человек не замечает:
- Ловушка. В форме есть поле, невидимое людям. Бот его заполняет и получает обычную страницу «проверьте почту», но аккаунт не создаётся.
- Время заполнения. Форма, отправленная быстрее чем за 3 секунды или старше 3 часов, не принимается.
- Лимиты по адресу сети и по e-mail. Не больше 5 регистраций в час и 20 в сутки с одного адреса, 60 неудачных входов в час, 3 письма для сброса пароля в час на один e-mail.
- Одноразовая почта и ссылки. Адреса известных сервисов одноразовой почты (mailinator, yopmail, temp-mail и другие) не принимаются; дополнительные домены Владыка портала добавляет в «Настройках → Защита от ботов». Имя, организация и должность не могут содержать ссылки: так боты рассылают рекламу через наши приветственные письма.
Удалить пользователя навсегда
Откройте карточку пользователя («Администрирование → Пользователи» → человек), внизу раздел «Удалить аккаунт навсегда». Для подтверждения введите его e-mail.
- Нет следов в работе (бот или человек, который только зарегистрировался): аккаунт удаляется полностью, как будто его не было.
- Есть следы (вводил или менял данные, подписывал, состоял в команде, создавал проекты): удалить нельзя, GCP и 21 CFR Part 11 требуют, чтобы аудит хранил, кто что сделал. Портал предлагает анонимизацию: имя, e-mail, организация, должность и пароль стираются навсегда, вход закрывается, участие в командах заканчивается, письма в очереди удаляются. Записи и аудит остаются и указывают на номер аккаунта (#N).
- Владыки портала удалить нельзя, пока с него не сняты права. Себя удалить нельзя.
- Каждое удаление и анонимизация записываются в аудит портала по номеру аккаунта, без e-mail.
Удалить всех ботов сразу
«Пользователи → Удалить ботов…» показывает аккаунты, которые не подтвердили e-mail за выбранное время (1 час, сутки, 3 или 7 дней) и не оставили следов. Владыки портала, демо-команда и все, у кого есть записи в исследованиях, в список не попадают. Для подтверждения введите число аккаунтов.
@demo.invalid. Они неактивны, войти под ними нельзя, писем они не получают. В списке пользователей они собраны в отдельном фильтре «Демо-команда» и удаляются, когда не остаётся ни одного демо-проекта.Команды на сервере
Для Владыки портала сервера (в папке /opt/youedc-platform):
docker compose exec yp_app flask --app wsgi users-recent --days 7— регистрации за неделю: когда, с какого адреса, подтверждён ли e-mail, и адреса сети с подозрительно многими регистрациями.docker compose exec yp_app flask --app wsgi users-purge-unconfirmed --hours 24— показать неподтверждённых без следов; с--yesудалить их.docker compose exec yp_app flask --app wsgi user-delete EMAIL— показать, что будет (удаление или анонимизация); с--yesвыполнить.