1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Discuz-DiscuzX

 / Детали:

О проблеме утечки высоких привилегий в модуле space_thread

Предстоит сделать
Владелец
Создано  
20.04.2025

Есть ли уже подобные обращения по этой проблеме?

  • Я уже искал информацию и убедился, что никто не обращался с такой проблемой.

Описание проблемы

Простой пример: если тема имеет права доступа 255, то только пользователи с такими же правами могут просмотреть её, в противном случае будет выдана ошибка недостатка прав. Эта логика работает правильно.

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

Однако на практике в таблице space_thread поле reply (список ответов пользователя) отображает все ответы пользователя, независимо от того, имеют ли они права доступа к высокопривилегированным темам. Это может привести к утечке информации.

Так как в таблице forum_post нет поля readperm, для определения, какие посты не должны отображаться, необходимо получить tid по pid и затем получить readperm для соответствующего tid из таблицы forum_thread. Это требует дополнительных запросов для каждого ответа, что может создать значительную нагрузку на сервер, особенно если пользователь имеет десятки тысяч постов.

Таким образом, есть ли какие-то эффективные способы решения этой проблемы?

Шаги для воспроизведения проблемы

Сообщения об ошибках### Попытки решения проблемы

Информация о системе

Другая информация о версиях

Сделали ли вы какие-либо изменения самостоятельно

  • Если сайт был модифицирован или доработан, выберите этот пункт.

Другие сведения

Версия

X3.5

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/Discuz-DiscuzX.git
git@api.gitlife.ru:oschina-mirror/Discuz-DiscuzX.git
oschina-mirror
Discuz-DiscuzX
Discuz-DiscuzX