Files
Gnuboard7/tests/scenarios/board-secret-content-gate.yaml
HeuJung 04f1066e66 fix(release): 7.0.7 사전점검 실측 발견 결함 6건 보완 및 규정 반영
브라우저·SEO 실측(T1~T7 매트릭스 + 봇 렌더 스윕)에서 발견된 결함을 보완한다.

- 코어: 회원 일괄 상태변경 응답 메시지의 :count 플레이스홀더 미치환 수정
- 게시판·페이지: 비밀글·삭제글·미발행 첨부 썸네일이 KVE-2026-1914 게이트로
 깨진 것을 한시 서명 preview URL(게이트 통과 직렬화 발급 + 유효 서명 허용)로
 복구 — 무서명·변조·만료 요청 게이트는 종전과 동일
- 페이지: 발행/미발행 전환(after_publish)에도 SEO 캐시·사이트맵 갱신 구독
- 게시판: 게시판 디렉토리(전체 목록 + 내장 최근글)에 열람 권한 필터 적용
- 검색 화면: searchResults 데이터소스 auth_mode=optional 선언으로 로그인
 회원 검색 범위 복구 + data-sources.md 선언 의무 규정화(coverage 등록)
2026-08-18 10:38:50 +09:00

49 lines
2.5 KiB
YAML

feature: 비밀글 하위 리소스(첨부·댓글) 게이팅 (KVE-2026-1914 A-3/A-4)
description: |
부모 게시글이 비밀글이면, 본문뿐 아니라 하위 리소스(첨부 다운로드/미리보기, 댓글 목록)도
열람 권한(작성자/manager/posts.read-secret) 없는 요청에는 원문을 노출하지 않는다.
게이트 SSoT 는 SecretContentGate 이며, 첨부 서빙(preview/download)·댓글 목록·본문이 모두
같은 판정을 재적용한다. 미리보기 라우트는 permission 미들웨어 없이(공개 썸네일 정책)
컨트롤러/서비스의 비밀 게이트만이 게스트를 막는다.
이중 방어(A-4b): 댓글 목록은 1차로 CommentController::index 가 비뷰어에게 빈 컬렉션을
반환하고, 2차로 CommentResource 가 컨트롤러가 넘긴 부모 post 로 댓글당 원문을 재확인한다
(요청 속성 재사용 — 댓글당 board_posts lazy-load 없이).
axes:
viewer: [guest, regular, owner, manager]
effects:
- regular_user_cannot_preview_secret_post_attachment
- regular_user_cannot_download_secret_post_attachment
- guest_cannot_preview_secret_post_attachment
- guest_cannot_download_secret_post_attachment
- owner_can_access_secret_post_attachment
- manager_can_access_secret_post_attachment
- normal_post_attachment_still_public
- guest_can_preview_normal_post_attachment
# 서명 preview URL 축 — <img> 무인증 렌더 경로 (게이트 약화 없는 자격 위임, 7.0.7 사전점검 실측 발견)
- guest_with_valid_signature_passes_secret_preview_gate
- guest_with_tampered_signature_still_blocked
- guest_with_expired_signature_still_blocked
- secret_post_detail_serializes_signed_preview_url
- normal_post_detail_serializes_plain_preview_url
- regular_user_gets_empty_comment_list_on_secret_post
- guest_blocked_from_secret_post_comments
- owner_sees_secret_post_comments
- manager_sees_secret_post_comments
- normal_post_comments_still_visible
- second_defense_masks_secret_comment_content
- owner_second_defense_not_masked
- comment_list_no_per_comment_post_query
test_files:
- modules/_bundled/sirsoft-board/tests/Feature/User/SecretPostAttachmentAccessTest.php
- modules/_bundled/sirsoft-board/tests/Feature/User/SecretPostCommentAccessTest.php
rules_layer_coverage:
- rule: list-resource-resource-relation-requery-n-plus-one
coverage: CommentResource 는 컨트롤러가 넘긴 부모 post 를 재사용 — 댓글당 board_posts 조회 0건 (comment_list_no_per_comment_post_query 가 고정)