109 lines
4.8 KiB
Markdown
109 lines
4.8 KiB
Markdown
---
|
|
kind: maintenance
|
|
title: "배포 후 검증 체크리스트 — W3/W4 + 하드닝 b1/b2 (L3 deferred)"
|
|
created_at: 2026-06-29
|
|
session_id: 20260629-142115
|
|
status: pending
|
|
related_change: "../changes/2026-06-29-w3-w4-features.md"
|
|
related_security_checklist: "../security/security-remediation-checklist.md"
|
|
---
|
|
|
|
# 배포 후 검증 체크리스트 — W3/W4 + 하드닝 b1/b2
|
|
|
|
L3 런타임 스모크는 세션 20260629-100849 및 20260629-142115 에서 자동 수행하지 않고 **배포 후 과제로 이월**한 항목이다.
|
|
이 문서는 실 dev 환경(WAR 기동 + 실 DB) 에서 수동 확인해야 할 체크리스트다.
|
|
|
|
관련 변경이력: [2026-06-29-w3-w4-features.md](../changes/2026-06-29-w3-w4-features.md).
|
|
|
|
---
|
|
|
|
## 사전 조건
|
|
|
|
배포 전 아래 항목이 완료되어야 한다.
|
|
|
|
- [x] **DB DDL 8종 적용 완료** (사용자 보고 수신 2026-06-29): tag/games-hub/board/game-upload/badge DDL 5종 + W2 jam DDL 3종을 `db/apply-local-ddl.sh` 로 실 dev DB 에 일괄 적용.
|
|
- [ ] **b2 자산 수동 이전** — 아래 §자산 수동 이전 참조. WAR 기동 전 수행 권장.
|
|
|
|
---
|
|
|
|
## §자산 수동 이전 (b2 신규 저장루트)
|
|
|
|
`application.properties` 변경(`app.upload.game-storage-path=${user.home}/.bibimbap/uploads`)으로 업로드 저장루트가 `static/` 트리 밖으로 이전됐다.
|
|
|
|
**이전이 필요한 자산:**
|
|
|
|
```
|
|
# 이전 경로 → 새 경로
|
|
src/main/resources/static/profile/8/ → ~/.bibimbap/uploads/profile/8/
|
|
```
|
|
|
|
- `static/profile/8/` 에 user 8 프로필 이미지가 존재할 경우 새 경로로 수동 이전 필요.
|
|
- **미이전 시**: user 8 프로필 이미지 404 발생.
|
|
- `static/game/` 은 비어있으므로 게임 자산 이전 불필요.
|
|
|
|
**이전 명령 예시 (디렉토리가 존재하는 경우):**
|
|
|
|
```bash
|
|
mkdir -p ~/.bibimbap/uploads/profile/8
|
|
cp -r src/main/resources/static/profile/8/. ~/.bibimbap/uploads/profile/8/
|
|
# 확인 후 원본 삭제(선택)
|
|
```
|
|
|
|
완료 후 이 체크리스트 항목에 체크:
|
|
- [ ] user 8 프로필 이미지 `~/.bibimbap/uploads/profile/8/` 에 존재 확인
|
|
|
|
---
|
|
|
|
## L3 런타임 스모크 체크리스트
|
|
|
|
WAR 기동 후 아래 기능을 수동으로 확인한다.
|
|
|
|
### 1. 검색 (`/games/search`)
|
|
|
|
- [ ] 태그 필터(단일/다중 AND/OR) 정상 동작
|
|
- [ ] 정렬키 6종(최신/조회수/평점/리뷰수/잼연관 등) 전환 확인
|
|
- [ ] 잼 필터(`?jam=slug`) 경유 잼 게임 목록 표시
|
|
- [ ] 방문수 dedupe — 동일 사용자 짧은 interval 내 재방문 시 view_count 미증가 확인
|
|
|
|
### 2. 허브 (`/`)
|
|
|
|
- [ ] keyset 페이징 더보기(스크롤/버튼) — 중복 없이 다음 페이지 로드
|
|
- [ ] 진행중 잼 배너 표시 (`JamsMapper.listActive` → `/games/search?jam=` 라우팅)
|
|
- [ ] **게임카드 creator 배지 칩 표시** (이번 세션 신규 — `WebMvcController` creatorBadges 주입)
|
|
|
|
### 3. 포스팅 보드
|
|
|
|
- [ ] 포스팅 작성 (POST_WRITE 권한 보유 계정으로 로그인 후 `/posts/new`)
|
|
- [ ] 마크다운 sanitize 렌더 — XSS 시도(`<script>`) 차단 확인
|
|
- [ ] OG 미리보기 (`OgPreviewService`) — 외부 URL 입력 후 og:title/og:image 렌더
|
|
- [ ] 유니티 피드 폴링 — `@Scheduled` 실행 확인(로그 또는 `unity_feed_items` 테이블 증가)
|
|
- [ ] **★실 HTTPS 외부 fetch** — option-b hostname-connect 실 TLS 동작 확인 (단위는 HTTP mock만 사용했으므로 실 환경 필수)
|
|
|
|
### 4. 업로드 보안 (Unity WebGL)
|
|
|
|
- [ ] zip-slip 시도 거부 확인 (`../` 경로 포함 zip 업로드 → 거부)
|
|
- [ ] 포맷 거부 — wasm/data/loader 파일 미포함 zip 거부
|
|
- [ ] 정상 Unity 빌드 업로드 + replaceUuid 경로 교체 성공
|
|
- [ ] **업로드물이 `~/.bibimbap/uploads/game/` 에 생성·서빙되는지 확인** (b2 신규 경로)
|
|
|
|
### 5. 배지 / 평판
|
|
|
|
- [ ] 배지 자동부여 — 리뷰 10건 작성 후 Reviewer 배지 자동 부여
|
|
- [ ] 배지 자동부여 — 게임 업로드 3건 후 Technician 배지 자동 부여
|
|
- [ ] 수동 grant/revoke — BADGE_MANAGE 권한 계정으로 `/manage/badges` 접근 + grant/revoke 동작
|
|
- [ ] 리뷰 작성자 배지 칩 — 게임 상세 리뷰 목록에서 리뷰어 배지 칩 표시
|
|
- [ ] **프로필 myBadges 표시** (이번 세션 신규 — `profile.jsp` 본인 배지 주입)
|
|
|
|
### 6. 보안 하드닝 b1 — SSRF DNS 캐시 TTL
|
|
|
|
- [ ] **★SSRF ttl 런타임 반영 확인**: 앱 기동 후 `java.security.Security.getProperty("networkaddress.cache.ttl")` 값이 `"30"` 인지 확인.
|
|
- 반영됨: `@PostConstruct initDnsCachePolicy()` best-effort 성공.
|
|
- **미반영 시 조치**: JVM 레벨 설정으로 격상 — `$JAVA_HOME/conf/security/java.security` 에 `networkaddress.cache.ttl=30` 추가. (결정적 보장은 JVM 레벨이 정본.)
|
|
|
|
---
|
|
|
|
## 완료 기준
|
|
|
|
위 체크리스트 전항목 체크 + §자산 수동 이전 완료 시 L3 스모크 통과.
|
|
결과를 이 문서에 직접 기록하거나 관련 work-log 에 append.
|