--- name: security-review description: | 프론트엔드 코드에서 XSS, CSRF, 민감 정보 하드코딩, npm 의존성 취약점을 자동 감지하고 우선순위별 보안 리포트와 패치 가이드를 생성합니다. 다음 상황에서 반드시 사용하세요: - "보안 점검해줘", "취약점 검사해줘", "npm audit 분석해줘" - PR/배포 전 보안 체크리스트를 확인할 때 - 민감 정보 하드코딩이 의심될 때 --- # 프론트엔드 보안 검토 (security-review) 코드베이스 + npm audit → XSS / CSRF / 민감 정보 / 의존성 취약점 자동 스캔 → 보안 리포트. ## 언제 사용하는가 - PR 머지 전 보안 사전 검토 - 배포 전 최종 보안 체크리스트 - 의존성 업데이트 후 취약점 확인 ## 스캔 범위 | 항목 | 설명 | |---|---| | XSS | `v-html`, `innerHTML`, `dangerouslySetInnerHTML` 사용 | | 민감 정보 하드코딩 | API 키, 토큰, 비밀번호, 시크릿 리터럴 | | CSRF | `SameSite` 쿠키 설정, CORS 구성 | | 오픈 리다이렉트 | 검증 없는 외부 URL 리다이렉트 | | npm 의존성 취약점 | CVE 등급별 취약 패키지 | | 환경 변수 노출 | `NUXT_PUBLIC_` 외 시크릿을 클라이언트에 노출 | --- ## 작업 순서 ### Phase 1: 코드 정적 분석 1. 소스 파일을 스캔해 아래 패턴을 탐지한다. #### XSS 위험 ```vue
``` 탐지 패턴: - `v-html` + 사용자 입력 변수 바인딩 - `innerHTML =` 직접 할당 - `eval()`, `Function()` 사용 #### 민감 정보 하드코딩 탐지 패턴: - `apiKey`, `api_key`, `secret`, `password`, `token` 변수에 리터럴 문자열 할당 - `.env` 파일이 아닌 소스 코드에 키 형태 문자열 (예: `sk-...`, `Bearer ...`) - `nuxt.config.ts`에 시크릿을 `public` 섹션에 노출 ```ts // ⚠️ 위험 const apiKey = 'sk-abc123...' // ✅ 안전 const apiKey = useRuntimeConfig().apiKey // 서버 전용 ``` #### 오픈 리다이렉트 ```ts // ⚠️ 위험: 검증 없는 외부 URL 리다이렉트 const to = route.query.redirect as string navigateTo(to) // ✅ 안전: 내부 경로만 허용 const to = route.query.redirect as string if (to && to.startsWith('/')) navigateTo(to) ``` #### Nuxt 환경 변수 분리 확인 - 서버 전용 시크릿: `runtimeConfig.apiSecret` (클라이언트 미노출) - 공개 가능한 값만: `runtimeConfig.public.apiBase` ### Phase 2: npm 의존성 취약점 스캔 ```bash npm audit --json ``` 결과를 파싱해 CVE 등급별로 분류: - **Critical / High**: 즉시 패치 필요 - **Moderate**: 스프린트 내 패치 - **Low**: 모니터링 각 취약 패키지에 대해 안전 버전 및 업그레이드 명령어를 제시한다. ### Phase 3: 보안 헤더 확인 `nuxt.config.ts`의 `routeRules` 또는 서버 설정에서 아래 헤더를 확인한다: ```ts // nuxt.config.ts 권장 보안 헤더 routeRules: { '/**': { headers: { 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'DENY', 'Referrer-Policy': 'strict-origin-when-cross-origin', } } } ``` --- ## 출력 형식 ``` ## 보안 검토 리포트 ### 🔴 Critical (즉시 조치) - [파일:라인] 취약점 설명 + 수정 코드 ### 🟡 High (스프린트 내 조치) - [파일:라인] 취약점 설명 + 개선 방향 ### 🟢 Moderate / Low - [목록] ### npm 취약점 - Critical: N건 — `npm audit fix --force` 권장 패키지: [목록] - High: N건 — 안전 버전: [버전 목록] ### 보안 헤더 현황 - 적용됨: [목록] - 미적용: [목록 + 추가 코드] ### ✅ 정상 항목 - 환경 변수 분리 적절, v-html 미사용 등 ```