public-share: положительная ветка getSharePage (возврат санитизированного контента анонимной модели) без тестов #85
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Найдено в multi-aspect code review всех изменений с коммита
053a9c0d(ветка develop).Грань: test-coverage / security · Severity: warning
Где:
apps/server/src/core/ai-chat/tools/public-share-chat-tools.service.ts:117-154Проблема
Спека гоняет только негативные ветки getSharePage (вне шары, ограниченный потомок). Положительная ветка — страница принадлежит этой шаре, не удалена, не ограничена, контент возвращается — не исполняется. Именно она security-релевантна: перед отдачей контента анонимной модели обязателен updatePublicAttachments (срез comment-марок, токенизация вложений) и затем jsonToMarkdown. Если санитайзер удалят/переставят, все текущие тесты пройдут (они проверяют, что updatePublicAttachments НЕ вызван), и регрессия с утечкой comment-марок/сырых attachment id уедет в прод.
Предлагаемый фикс
Тест: getShareForPage резолвит THIS-SHARE, findById возвращает живую страницу, hasRestrictedAncestor=false — проверить, что updatePublicAttachments вызван с page и результат {title, markdown}. Второй кейс: findById возвращает soft-deleted страницу — generic-ошибка без фетча контента.
Ghost referenced this issue2026-06-21 04:15:11 +03:00