- Змішані
- 23 вересня 2026 р. о 01:16 UTC
- Авторизація
- Kamo
- Про нас
- 6488bd4
RagSearchController читати orgId/memberId/memberType з тіла JSON на кожному шлях, в тому числі запити, які автентифікуються сеансом ***, а не X-Internal-Auth. У зареєстрованому учаснику тільки VIEW KB ARTICLES може поставити підписку id org, або інший ідентифікатор учасника, в тілі та пошуку org бази знань або приватні ноти учасника прямо через Qdrant фільтри — засвідчено, хто запитав, але ніколи не протипоказано, що вони може запитати. /reindex/{orgId} і /status/{orgId} мав однакову форму рівень вгору: шлях orgId був довірений після того, як дзвоник провів MANAGE KB SETTINGS в * some * org, не перевіряючи його. Зробляючи його гірше, СесіяHelper.hasRight повернулася до сесії з Список порожніх прав і знову для одного без права, тому право перевіряючи всі три кінцеві точки були пропущені тим самим відсутнім поле. Правило тепер: на шляху сеансу, org/member/memberType отримані з session only ****** додано до SessionHelper, і reindex/status додатково зажадає шлях orgId до рівних сеансів org. hasRight не закривається, що відповідає КБСервісу. Шлях X-Internal-Auth безперешкодно — AIService не має жодного сеансу самостійної та не має права на ім’я пошук в організмі. Також переключили X-Internal-Auth порівняння з String.equals до ПовідомленняDigest.isEqual так що різниця термінів не може витікати секрет один байт час. Тести: СесіяHelperRights Тест-шпильки незакриті випадки (мірори KBServices Полулюкс RagSearchControllerAuthzTest шпигує тілесно-надійна помилка і reindex/status org перевірка, і окремо доводить внутрішній шлях Довіряє організму (тільки для виклику) Кожен був перевірений червоний до цієї угоди.
