- Порезанный
- 23 сентября 2026 г. в 01:21 UTC
- Автор
- Kamo
- Обещать
- 168cc8a
CheckFileInfo была единственной конечной точкой WOPI, которая сравнивала токены доступа. документ против пути запроса и перепроверенный прямой доступ; GetFile, PutFile, PutRelativeFile, RenameFile и блокировка/разблокировка/освещение/получение блокировки переопределяются только Проверил подпись и срок действия токена, а затем действовал на все, что показывал imgId. вверх по URL. Токен, отчеканенный POST/api/docs/open/{imgId} для одного документа законно открывшийся член мог читать или переписывать любой другой документ любая организация путем редактирования пути и может заблокировать, разблокировать или исследовать замок; Любой документ таким же образом. Собственный действительный токен получателя только для чтения Также можно перезаписать документ напрямую, минуя флаг UserCanWrite. CheckFileInfo уже велела редактору навязать клиентскую сторону. Каждая конечная точка WOPI теперь требует предмета JWT токена (imgId). Для того, чтобы сравняться с ним по времени, и перепроверка DocumentService.canUserAccess (читай: GetFile, GET LOCK) или canUserWrite (написано: PutFile, PutRelativeFile, RenameFile, LOCK/UNLOCK/) REFRESH LOCK) против базы данных вместо того, чтобы доверять требованиям токена — доступ может быть отменен или истекает после чеканки токена, поэтому живой чек строго сильнее, чем требование статического разрешения. Отказ в проверке подлинности токена байтовые чтения/записи теперь записываются через DocumentAccessAuditor таким же образом. Недействительный токен уже был. Новый тест: WopiControllerAccessTest (11 случаев, охватывающих все перечисленные конечные точки) выше); мутация проверяется путем возврата изменений WopiController локально. Все 11 краснеют, потом восстанавливаются. WopiControllerAuditTest и WopiEditSessionTest Обновлено, чтобы заглушить теперь необходимые проверки доступа, поскольку в их существующих случаях все Допустим, разрешенный звонок.
