Запретить неавторизованным пользователям создавать темы

Привет, у меня возникла проблема со спам-аккаунтами, которые создаются через локальные аккаунты. Если я открою один из таких аккаунтов, там указано, что основной адрес электронной почты «не подтверждён». Я хочу запретить таким аккаунтам создавать новые темы до тех пор, пока они не подтвердят свою почту. Как это реализовать?

Не знаю, поможет ли этот параметр удалению не подтвердивших аккаунт пользователей.

purge_unactivated_users_grace_period_days

Если установить это значение в 0, неактивированные пользователи останутся навсегда? Это кажется полностью противоположным тому, для чего предназначено это поле.

Если их электронные адреса не подтверждены, им не следует разрешать публиковать сообщения. Это тестовые пользователи? (То есть, разрешаете ли вы анонимным пользователям отправлять письма?)

То есть, разрешаете ли вы анонимным пользователям отправлять письма?

Как это проверить? Есть настройка «Включить временных пользователей» с описанием «Автоматически создавать временных пользователей при обработке входящих писем», и она отмечена. Это то, о чём вы спрашиваете?

Вот как сейчас выглядят права доступа для спам-аккаунтов.

Похоже, это не тестовый пользователь.

Не понимаю, как люди могут входить на ваш сайт с неактивированным аккаунтом. У вас есть какие-то специальные методы входа?

У вас есть какие-либо специальные методы входа?

Только два метода: локальный вход и Google OAuth. Я почти уверен, что он не использует Google, так как его домен не связан с Gmail.

Я вижу, что есть другая тема с похожей проблемой, как у меня:

Не знаю, есть ли какие-либо прогресс по этой теме.

Ага, мы это дальше обсуждали в личных сообщениях. Проблема заключалась в том, что SSO не проверял адреса электронной почты перед передачей их в Discourse.

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

Нет, лучше всего создать публичную тему, чтобы другие люди могли высказать свои идеи, если они у них есть. :+1:

Боюсь, у меня больше нет идей относительно того, что произошло. Не деактивировал ли кто-то свой аккаунт после публикации? (Вы можете проверить журналы действий персонала на наличие записи «деактивировать пользователя»)

Да, я деактивировал эту учётную запись после того, как увидел, что она создала одну спам-тему. В access.log nginx также не зафиксировано никакой активности по созданию новых тем от этого пользователя. Меня очень смущает, как этот человек мог создать новую тему без использования веб-интерфейса. Должен быть какой-то другой способ создания тем, помимо веб-интерфейса, поэтому я и прошу помощи здесь.

Если вы деактивировали аккаунт, это объясняет, почему электронная почта не подтверждена (необходимость повторно подтвердить электронную почту является частью процесса деактивации).

Нет, этот аккаунт сначала создал спам-тему с неподтверждённым адресом электронной почты, поэтому я деактивировал его.

Кажется, мы говорим о разном. :slight_smile: Я имею в виду не «Запрет» или «Приостановку», а конкретно «Деактивацию»:

Вы проверяли журналы действий сотрудников?

извините, я имел в виду, что я «заглушил» и «приостановил» эту учётную запись после той спам-темы.

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

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

Есть ли какие-либо логи, которые могли бы дать подсказку? Кроме логов nginx.

Не припоминаю. Ты единственный модератор/администратор сайта?

Я администратор этого сайта, просто пытаюсь разобраться, что происходит. Я даже не знаю, где запущен этот сервер, и у меня нет доступа по SSH.

Тем временем я заметил что-то странное: кто-то вошёл под учётной записью «system», создал учётную запись «Test» и сразу же удалил её.

discourse-1

Я спросил у администраторов, входил ли кто-то под учётной записью system и создавал ли учётную запись Test, но пока ответа от них нет. Если они скажут, что в то время никто не входил под учётной записью system, то, похоже, этот сервер скомпрометирован.

В таком случае, может ли кто-либо создать учётную запись пользователя через базу данных, обойдя проверку по электронной почте? Можно ли увидеть их активность в логах базы данных?

Думаю, это отображается в логах, когда пользователь нажимает кнопку удаления в своём профиле.

Если пользователь удалит свою учётную запись из своего профиля, будут ли в логах в поле «Пользователь» отображаться system? Должно же отображаться «Test» в поле «Пользователь», верно? Тут что-то неладное.