chore(backend): 미뤄 둔 의존성 넷을 배포 2주 지난 판으로 올린다 #16

Merged
ttipo merged 2 commits from chore/deps-2026-11 into main 2026-11-05 18:28:34 +09:00
Owner

무엇을 · 왜

.claude/rules/security.md 의 유예 표에서 2026-11-05 를 기다리던 backend 의존성 넷을 배포 2주가 지난 판으로 올린다. 모두 도달 경로가 없다고 확인해 둔 권고라 2주 규칙을 따랐다(컨테이너 안 npm install … --before=<2주 전> — 그보다 새 판은 들어오지 않게).

패키지 전 → 뒤 권고
body-parser 2.3.0 → 2.4.0 (lock 만 — express 5.2.1 의 범위 안, qs 6.16.1 · iconv-lite 0.7.3 · content-type 2.1.0 이 따라옴) GHSA-27r3 (high)
multer override ^2.4.0 → ^2.5.0 GHSA-q7qp (high)
sanitize-html 2.18.0 → 2.18.1 GHSA-c9rx
fast-uri (개발 전용) 3.1.8 → 3.1.9
  • multer override 는 지우지 못한다 — @nestjs/platform-express 11.x 최신(11.2.8)도 2.4.0 을 정확히 고정하고, 2.5.0 은 12.3.0 부터 선언한다(그것이 override 의 근거 · 2.4.0 과 의존성 같음). v12.3 이상으로 올릴 때 지운다.
  • js-yaml(swagger 하위)은 그대로 — swagger 11.4.8(11-04)이 js-yaml 5.5.0 을 선언하지만 2주가 안 됐다(2026-11-18 이후 npm update @nestjs/swagger).
  • npm audit: 29 → 23 (운영 11 → 5, high 3 → 0). 남은 운영 권고(js-yaml · typeorm 아래 glob · minimatch)와 개발 전용 묶음은 유예 표에 다시 볼 시점과 함께 적었다. npm audit fix 를 통째로 돌리지 않는 까닭도(dry-run 이 2주 미만 판을 섞는다).

확인 방법

  • npm 11.6.2 dev 컨테이너에서 바꿨다. 저장소를 마운트하지 않은 임시 복사본(Linux 컨테이너)에서 npm ci · 인자 없는 npm install 뒤 lock · package.json 바이트 그대로 · npm ci --omit=dev 뒤 sanitize-html · multer · body-parser require.
  • lint 0 · type-check 0 · 단위 163 suites / 3,203 · e2e 266/266 · build(TSC 0).
  • dev 백엔드에 실제 요청: gzip · zstd 본문 415, charset=utf-16le 400 VAL_001, charset=foo 415, 공백뿐인 본문 400 — 압축 본문을 풀기 전에 거절하는 동작 그대로.
  • HTML 정화 spec 모두 통과(iframe 2만 단계 회귀 포함).

영향 범위

  • backend
  • frontend
  • flutter
  • docker / 인프라
  • 규칙 문서(.claude/) — security.md 유예 표 · nestjs 스킬의 multer override 줄

체크리스트

  • 린트/분석 통과 (Warning 0) · 변경 영역 테스트 통과
  • 주석 한국어, 매직 넘버·하드코딩 문자열 없음 — 해당 없음
  • 사용자 노출 실패는 모두 에러 코드와 함께 처리 — 해당 없음
  • 에러 코드를 바꿨다면 npm run sync:error-codes 실행 후 생성 파일까지 커밋 — 해당 없음
  • 민감정보 미커밋 (*.example 값은 placeholder)
  • 로그에 비밀번호·토큰·요청 본문 전체가 남지 않음 — 해당 없음

운영 반영: 서버 B 에서 git pull 뒤 backend 만 다시 빌드(up -d --build --no-deps backend).

🤖 Generated with Claude Code

## 무엇을 · 왜 `.claude/rules/security.md` 의 유예 표에서 2026-11-05 를 기다리던 backend 의존성 넷을 배포 2주가 지난 판으로 올린다. 모두 도달 경로가 없다고 확인해 둔 권고라 2주 규칙을 따랐다(컨테이너 안 `npm install … --before=<2주 전>` — 그보다 새 판은 들어오지 않게). | 패키지 | 전 → 뒤 | 권고 | | --- | --- | --- | | body-parser | 2.3.0 → 2.4.0 (lock 만 — express 5.2.1 의 범위 안, qs 6.16.1 · iconv-lite 0.7.3 · content-type 2.1.0 이 따라옴) | GHSA-27r3 (high) | | multer | override `^2.4.0` → `^2.5.0` | GHSA-q7qp (high) | | sanitize-html | 2.18.0 → 2.18.1 | GHSA-c9rx | | fast-uri (개발 전용) | 3.1.8 → 3.1.9 | | - multer override 는 지우지 못한다 — `@nestjs/platform-express` 11.x 최신(11.2.8)도 2.4.0 을 정확히 고정하고, 2.5.0 은 12.3.0 부터 선언한다(그것이 override 의 근거 · 2.4.0 과 의존성 같음). v12.3 이상으로 올릴 때 지운다. - js-yaml(swagger 하위)은 그대로 — swagger 11.4.8(11-04)이 js-yaml 5.5.0 을 선언하지만 2주가 안 됐다(2026-11-18 이후 `npm update @nestjs/swagger`). - `npm audit`: 29 → 23 (운영 11 → 5, **high 3 → 0**). 남은 운영 권고(js-yaml · typeorm 아래 glob · minimatch)와 개발 전용 묶음은 유예 표에 다시 볼 시점과 함께 적었다. `npm audit fix` 를 통째로 돌리지 않는 까닭도(dry-run 이 2주 미만 판을 섞는다). ## 확인 방법 - npm 11.6.2 dev 컨테이너에서 바꿨다. 저장소를 마운트하지 않은 임시 복사본(Linux 컨테이너)에서 `npm ci` · 인자 없는 `npm install` 뒤 lock · package.json 바이트 그대로 · `npm ci --omit=dev` 뒤 sanitize-html · multer · body-parser `require`. - lint 0 · type-check 0 · 단위 163 suites / 3,203 · e2e 266/266 · build(TSC 0). - dev 백엔드에 실제 요청: gzip · zstd 본문 415, `charset=utf-16le` 400 `VAL_001`, `charset=foo` 415, 공백뿐인 본문 400 — 압축 본문을 풀기 전에 거절하는 동작 그대로. - HTML 정화 spec 모두 통과(iframe 2만 단계 회귀 포함). ## 영향 범위 - [x] backend - [ ] frontend - [ ] flutter - [ ] docker / 인프라 - [x] 규칙 문서(.claude/) — security.md 유예 표 · nestjs 스킬의 multer override 줄 ## 체크리스트 - [x] 린트/분석 통과 (Warning 0) · 변경 영역 테스트 통과 - [x] 주석 한국어, 매직 넘버·하드코딩 문자열 없음 — 해당 없음 - [x] 사용자 노출 실패는 모두 에러 코드와 함께 처리 — 해당 없음 - [x] 에러 코드를 바꿨다면 `npm run sync:error-codes` 실행 후 생성 파일까지 커밋 — 해당 없음 - [x] 민감정보 미커밋 (`*.example` 값은 placeholder) - [x] 로그에 비밀번호·토큰·요청 본문 전체가 남지 않음 — 해당 없음 운영 반영: 서버 B 에서 `git pull` 뒤 backend 만 다시 빌드(`up -d --build --no-deps backend`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ttipo added 2 commits 2026-11-05 14:07:25 +09:00
security.md 유예 표에서 11-05 를 기다리던 항목 — body-parser 2.4.0(lock 만, qs 6.16.1 ·
iconv-lite 0.7.3 이 따라옴) · multer override ^2.5.0(platform-express 12.3.0 이 2.5.0 을
선언한다 — 11.x 최신도 2.4.0 고정이라 override 를 남긴다) · sanitize-html 2.18.1 · fast-uri 3.1.9.
모두 도달 경로가 없던 권고라 2주 규칙대로 골랐다(--before 로 그보다 새 판은 받지 않았다).
audit 29 → 23(운영 11 → 5, high 3 → 0). js-yaml 은 swagger 11.4.8(11-04)이 2주가 안 돼 그대로 둔다.

npm 11.6.2 컨테이너에서 바꿨다. 임시 복사본에서 npm ci, 인자 없는 npm install 이 lock 을 바이트
그대로 두는지, npm ci --omit=dev 뒤 require, lint · type-check · 단위 3,203 · e2e 266 · build 통과.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(rules): 의존성 유예 표를 11-05 점검으로 고친다
CI / Backend (lint · type-check · test · e2e · build) (pull_request) Successful in 13m38s
CI / Frontend (lint · type-check · test · build) (pull_request) Successful in 12m24s
CI / Infra (compose · Dockerfile · nginx · 운영 스크립트) (pull_request) Successful in 1m47s
CI / 에러 코드 SSOT 동기화 검사 (pull_request) Successful in 10m56s
65c0490675
올린 넷을 표에서 빼고, 남은 운영 권고(swagger 아래 js-yaml · typeorm 아래 glob · minimatch)와
개발 전용 묶음의 다시 볼 시점을 적는다. multer override 는 platform-express 를 v12.3 이상으로
올릴 때 지운다(nestjs 스킬도 같이). npm audit fix 를 통째로 돌리지 않는 까닭을 함께 적는다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ttipo merged commit f49dc2a186 into main 2026-11-05 18:28:34 +09:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ttipo/arasystem#16