Простой пример: если тема имеет права доступа 255, то только пользователи с такими же правами могут просмотреть её, в противном случае будет выдана ошибка недостатка прав. Эта логика работает правильно.
Проблема заключается в том, что если пользователь оставляет ответ в теме, то эти ответы должны быть недоступны для пользователей с правами ниже 255.
Однако на практике в таблице space_thread
поле reply
(список ответов пользователя) отображает все ответы пользователя, независимо от того, имеют ли они права доступа к высокопривилегированным темам. Это может привести к утечке информации.
Так как в таблице forum_post
нет поля readperm
, для определения, какие посты не должны отображаться, необходимо получить tid
по pid
и затем получить readperm
для соответствующего tid
из таблицы forum_thread
. Это требует дополнительных запросов для каждого ответа, что может создать значительную нагрузку на сервер, особенно если пользователь имеет десятки тысяч постов.
Таким образом, есть ли какие-то эффективные способы решения этой проблемы?
X3.5