/u?exclude_groups=admins не работает при выходе из системы

Не работает в режиме без авторизации:

https://meta.discourse.org/u?exclude_groups=admins&order=likes_received

Без авторизации:

С авторизацией:

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

Это сделано намеренно, чтобы показывать участников группы администраторов, даже когда установлен параметр /u?exclude_groups=admins?

Я думаю, это может происходить потому, что по умолчанию члены административных групп недоступны для пользователей, не авторизованных в системе. Вы можете проверить это, например, на административной группе Meta: https://meta.discourse.org/g/admins.

Вы можете настроить это в параметрах группы, что должно решить вашу проблему (я не проверял это на практике).

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

Прежде чем опубликовать пост, я посетил https://meta.discourse.org/g/admins, который скрыт от пользователей, не вошедших в систему. Именно поэтому я создал эту тему. Ссылка /g/admins скрыта для незарегистрированных пользователей, но они всё равно могут увидеть участников группы «Администраторы», перейдя по адресу /u?exclude_groups=admins, что, по меньшей мере, странно.

Теперь я запутался. Исходя из заголовка, я ожидал, что и /g/admins, и /u?exclude_groups=admins будут работать для авторизованных пользователей, но не будут работать для тех, кто не вошёл в систему.

Возможно, мы говорим о разных состояниях «скрытости» на странице групп:
Под «скрытым» я имею в виду что-то вроде приватного — переход по ссылке /g/admins приводит неавторизованных пользователей на страницу ошибки. Мне кажется, вы, возможно, думаете о том, что большинство пользователей не видят группы по умолчанию на странице групп (за исключением модераторов), потому что дополнительный код их скрывает. Но даже если группы не отображаются на странице групп, переход на страницу конкретной группы возможен, если пользователь перешёл по ссылке.

Приватная скрытость делает группу секретной, и именно поэтому, на мой взгляд, фильтр в каталоге пользователей не должен работать — он мог бы раскрыть информацию. Группа, которая просто не отображается, не является секретной.

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

Вы вышли из системы, и URL = /u?exclude_groups=admins:

Извините, если я что-то неправильно понял. Я думал, что /u?exclude_groups=admins означает, что администраторы не включены в список? Нет.

В настоящее время они исключаются только при входе в систему, но при выходе из системы они включаются.

Было бы хорошо, если бы /u?exclude_groups=admins работал как для зарегистрированных, так и для незарегистрированных посетителей.

Можете подробнее объяснить, что вы хотите мне показать этим скриншотом?

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

Затем вы демонстрируете, что неавторизованный пользователь не может получить доступ к данным участников группы. Для меня это логично. Я ожидал бы, что это будет работать, только если в обоих настройках вы выбрали вариант «все».

Кажется, вы говорите: «Я хочу скрыть от посетителей данные о том, кто входит в группу администраторов». Но в то же время вы жалуетесь, что эти данные недоступны для фильтрации каталога пользователей.

Вы не можете исключить участников группы, если вам не разрешено знать, кто в неё входит.

Поддерживаю сказанное @Moin здесь. Если бы мы реализовали работу параметра exclude_groups=admins, то кто-то мог бы вывести список участников группы администраторов, даже если у них не должно быть доступа.

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

Та же логика применима и к любому, кто просто регистрируется. Если новый пользователь создаёт учётную запись и использует exclude_groups=admins, то администраторы скрываются из его списка, и он уже может сделать вывод о составе группы, сравнивая отфильтрованный и нефильтрованный варианты.

Порог для «вычисления» этого факта — просто создание бесплатной учётной записи, что любой может сделать за несколько секунд. Так в чём же реальная разница между незарегистрированным посетителем и аккаунтом, созданным минуту назад?

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

Это зависит от конфигурации сайта — на многих сайтах открытая регистрация отсутствует.

Так что изменение видимости группы должно стать хорошим обходным решением? Или с этим есть какая-то проблема?

:slight_smile: Их очень много. Большинство из тех, что я посещаю

Да, это, безусловно, так. Но когда речь заходит о функциях безопасности, мы должны проектировать системы так, чтобы они работали в точности так, как описано. Если кто-то решит скрыть членство в группе, это должно работать на 100 % надёжно.

Почему бы вам не изменить видимость группы администраторов и её участников на «для всех», чтобы добиться этого? Тогда данные будут доступны посетителям, и фильтр должен сработать. Особенно если, как вы говорите, любой может войти в систему и посетить /g/admins, то не должно иметь значения, смогут ли это сделать и неавторизованные пользователи.

Дело в том, что скрытие членства в группе здесь всё равно не слишком надёжно. На многих форумах, включая мой, администраторы — это некоторые из самых активных пользователей. Поэтому достаточно отсортировать каталог по активности, и обычно можно сразу заметить одного-двух администраторов.

Членство в группе администраторов легко определяется по открытой активности. Особенно потому, что https://meta.discourse.org/u по умолчанию уже сортируется по активности:

Конечно, можно скрыть все профили. Но моя суть в том, что преимущество в безопасности, которое, как утверждается, даёт текущее игнорирование параметра /u?exclude_groups=admins, кажется минимальным или вовсе отсутствует, а в лучшем случае носит поверхностный характер.

Таким образом, регистрация в данном случае не добавляет никакой безопасности. Будь вы неавторизованным пользователем или просто создадите аккаунт, вы сможете определить администраторов через сортировку, поскольку их уровень активности остаётся публичным, даже если я пытаюсь исключить их из списка с помощью /u?exclude_groups=admins.

Именно поэтому я и сообщил об этом в первую очередь. Если бы скрытие администраторов было намеренной функцией безопасности, можно было бы ожидать, что система будет приоритизировать предотвращение раскрытия этой информации неавторизованным пользователям. Но на деле всё наоборот: неавторизованный пользователь может выяснить это ещё проще, просто посетив страницу /u с настройками по умолчанию.

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

Редактирование:
Что касается меня, то возвращаясь к основной проблеме, речь идёт даже не о безопасности. Это был аргумент, выдвинутый вами. Я просто хочу, чтобы активность администраторов не отображалась в рейтингах для плагина боковой панели и на странице /u.

Я понимаю вашу точку зрения, но важно учитывать, что система групповой безопасности не специфична для группы @admins. Та же модель безопасности должна работать и для группы @super-secret-lurkers, если на форуме она есть :wink:

Возможность определить «не входит в группу» в конечном итоге равносильна возможности видеть «входит в группу».

Да, это имеет смысл. Поможет ли вам изменить группу администраторов так, чтобы она была видна «всем»?

Нет, я пробовал это до открытия. Думал, что для работы исключения нечлены должны иметь возможность видеть группу. :confused: Но нет, /u?exclude_groups=admins полностью игнорируется для незарегистрированных посетителей.

Речь идёт не о сокрытии пользователей, а о сокрытии информации о том, кто входит в состав группы. Именно поэтому вы можете видеть участников скрытой группы в каталоге, но не можете открыть страницу самой группы. Вы знаете, что пользователь существует, но не знаете, состоит ли он в секретной группе.

Например, у вас есть группа для клиента A, но вы не хотите, чтобы другие пользователи вашего форума знали о её существовании. В таком случае вы ограничиваете видимость группы, но, разумеется, участники остаются видимыми везде. Вы видите их сообщения и их в каталоге пользователей. Но вы не знаете, что они состоят в группе клиента A.

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

О, понял! Ну, тогда это звучит как баг.

Уточняю: вы установили видимость группы и видимость участников группы на «все»?

Вы уже можете видеть, кто находится в администраторах @Moin, даже будучи разлогиненным. Не все сразу.

не авторизованный пользователь:

Но это не было моей проблемой здесь касательно секретности или безопасности:

Нет, я включил только настройку «Кто может видеть участников этой группы?».

Я не хочу, чтобы была включена опция «Кто может видеть эту группу», так как это позволяет публичному доступу к /g/admins.

Но я могу протестировать, чтобы проверить, будет ли учтено /u?exclude_groups=admins.

скоро вернусь