KamoCRM

Шлях сеансу шукає самостійної орги, ніколи не потрібно

FixRAGService
Shipped
23 вересня 2026 р. о 01:16 UTC
Author
Kamo
Commit
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 перевірка, і окремо доводить внутрішній шлях Довіряє організму (тільки для виклику) Кожен був перевірений червоний до цієї угоди.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing