- Порезанный
- 23 сентября 2026 г. в 11:14 UTC
- Автор
- Kamo
- Обещать
- d47b471
/topic/chat/session/{guid} и /topic/webrtc/session/{guid} не охранялись. В любом случае: любой аутентифицированный сокет может быть записан в прямом эфире другого сеанса. чат-сообщения или трафик WebRTC с предложением/ответом/ICE исключительно на основе знания (или гадание) его путеводитель - живой близнец дырки для чтения транскриптов MediaController.canReadSession закрыт для HTTP (f7b2bd5). Клиент отправляется Они также были открыты; ни один законный клиент никогда не отправляет им (каждый реальный клиент не отправляет их). один подписчик, поэтому поддельный SEND может вводить поддельное живое сообщение или Сигнальный кадр в сеансе фальсификатор даже не может прочитать. WebSocketConfig.preSend теперь защищает оба префикса SessionAccessGuard#canRead - то же правило, которое использует MediaController. Не четвертая копия - и **************** теперь Отказывается от SEND сразу, сопоставляя каждую другую тему в этом списке разрешений. CanRead нужна вторая точка входа: ее существующая подпись просит HttpServletЗапрос прав абонента (дополнительный запрос SUPPORT TICKET) допуска), а в STOMP-кадре нет - только то, что WebSocketAuthInterceptor штамп в сессии на CONNECT (memberId/orgId/rights, читать дальше) Тот же самый *** сеанс HTTP-запрос был бы разрешен. Новый canRead (сессия, звонок, List<String> права) перегрузка принимает эту форму непосредственно; обе перегрузки теперь делегируют одной частной реализации, поэтому Правила написаны ровно один раз. Посетитель публичного чата вообще не является членом - PublicChatWebSocketInterceptor вместо этого уже решено и проверено против их сессионного знака при рукопожатии. Правило подписки является прямым Никогда не играйте в настольные игры SessionAccessGuard#canRead (для этого требуется Участник и отказался бы от звонящего, у которого нет ни одного) - подтверждено против Камо-внутренний, который только когда-либо подписывается на эти две темы и никогда Отправляет либо. Покрывается ******************* (член принят/отказан) Охранник, публичный посетитель, допущенный к собственному сеансу и отказавший различные, не связанные между собой темы, нетронутые, новые случаи в SessionAccessGuardTest и StompDestinationAuthzTest для списка прав Перегрузка и новый отказ. Проверка мутаций: отказ от нового Проверка соответствия, нарушение правил перегрузки списка прав и (как правило) регрессионная проверка) ранее существовавшее "неохраняемое" утверждение, которое закрывает каждое Поверните конкретное утверждение красным; все восстановлено и повторите зеленым.
