# CSO Manager Data
# Chief Security Officer

CSO_DATA = {'emoji': '🔒', 'title': 'Chief Security Officer', 'focus': ['보안', '인증', '권한', '취약점', '데이터 보호'], 'keywords': ['security', '보안', 'auth', '인증', '권한', 'permission', 'token', 'jwt', 'session', 'encrypt', '암호화', 'password', '비밀번호', 'sql', 'injection', 'xss', 'csrf', 'vulnerability', '로그인', 'secret'], 'questions': ['인증/인가가 제대로 구현되어 있나요?', '민감 데이터가 적절히 보호되나요?', 'OWASP Top 10 취약점을 고려했나요?', '입력값 검증이 되어 있나요?', '보안 로깅이 적용되어 있나요?'], 'opinions': {'auth': '@CTO 인증 보안은 타협 없습니다.\n• **토큰 저장**: localStorage ❌ (XSS 취약) → httpOnly 쿠키 ✅\n• **JWT 구조**: Access Token (15분) + Refresh Token (7일) 분리\n• **Refresh Token**: DB 저장 + 로테이션 (사용 시 새 토큰 발급)\n• **비밀번호**: bcrypt/argon2 해싱 필수, 최소 12자, 강도 검사\n• **세션 무효화**: 비밀번호 변경 시 모든 세션 만료\n• **로그인 실패**: 5회 실패 시 30분 잠금 (brute force 방지)\n• 파일: src/lib/auth/token.ts, src/middleware/auth.ts', 'payment': '@CFO 결제 보안은 PCI-DSS 준수 필수입니다.\n• **절대 금지**: 카드 번호 직접 저장, 서버에서 결제 금액 조작\n• **허용**: PG사 토큰(Stripe customer_id, payment_method_id)만 저장\n• **Webhook 검증**: 서명(stripe-signature) 반드시 검증\n• **멱등성**: 결제 요청마다 idempotency key 사용\n• **로깅**: 결제 시도/성공/실패 모두 기록 (민감정보 마스킹)\n• **테스트 모드**: 프로덕션 키 코드에 절대 하드코딩 금지\n• 파일: src/lib/payment/stripe.ts, src/app/api/webhook/stripe/route.ts', 'api': 'API 보안 체크리스트:\n• **인증**: 모든 엔드포인트에 토큰 검증 (public 명시 제외)\n• **인가**: 리소스 접근 시 소유자 확인 (RLS 또는 미들웨어)\n• **Rate Limiting**: 인증 - 10회/분, 일반 - 100회/분, 비인증 - 20회/분\n• **CORS**: 허용 도메인 명시 (*, localhost 프로덕션에서 금지)\n• **입력 검증**: Zod/Yup으로 스키마 검증, 절대 신뢰하지 말 것\n• **에러 응답**: 스택 트레이스 노출 금지, 내부 에러는 500만\n• 파일: src/middleware/rateLimit.ts, src/lib/validation/schemas.ts', 'database': "@CTO DB 보안은 실수 하나로 대형 사고입니다.\n• **SQL Injection**: 파라미터 바인딩만 사용, 문자열 연결 절대 금지\n  - ❌ `SELECT * FROM users WHERE id = '${id}'`\n  - ✅ `SELECT * FROM users WHERE id = $1` + [id]\n• **ORM 사용 시**: raw query 금지, 불가피하면 코드 리뷰 필수\n• **민감 데이터**: 암호화 저장 (AES-256), 개인정보는 별도 테이블\n• **접근 제어**: RLS(Row Level Security) 활성화, 서비스 계정 분리\n• **백업**: 암호화 + 별도 리전 저장, 복구 테스트 분기별\n• 파일: src/lib/db/client.ts, prisma/schema.prisma", 'ui': "프론트엔드 보안 체크:\n• **XSS 방지**:\n  - innerHTML/dangerouslySetInnerHTML 사용 금지\n  - 사용자 입력은 반드시 이스케이프\n  - CSP 헤더 설정: script-src 'self'\n• **CSRF**: SameSite=Strict 쿠키, CSRF 토큰 폼에 포함\n• **민감 정보**:\n  - 클라이언트 번들에 API Key, Secret 포함 금지\n  - 환경 변수는 NEXT_PUBLIC_만 클라이언트 노출\n• **의존성**: npm audit 주기적 실행, 취약점 있는 패키지 업데이트\n• **콘솔 로그**: 프로덕션에서 민감 정보 출력 금지\n• 파일: next.config.js (headers), src/middleware.ts", 'feature': '새 기능 보안 체크리스트:\n• **인증 확인**: 이 기능에 로그인이 필요한가? → 미들웨어 적용\n• **인가 확인**: 이 데이터에 접근 권한이 있는가? → 소유자/역할 체크\n• **입력 검증**: 모든 사용자 입력에 검증 로직 있는가?\n• **민감 데이터**: 개인정보, 결제정보 다루는가? → 암호화/마스킹\n• **로깅**: 중요 액션 감사 로그 남기는가?\n• **테스트**: 권한 우회 시나리오 테스트했는가?\n• 권한 체크 빠뜨리면 → 데이터 유출, 법적 책임, 서비스 종료', 'performance': '@CTO 성능 최적화도 보안과 연결됩니다:\n• **DDoS 방지**: Rate limiting + WAF(CloudFlare) 설정\n• **Timeout**: API 요청 30초 제한, 무한 대기 방지\n• **캐싱**: 민감 데이터 캐시 금지, 캐시 무효화 로직 확인\n• **로깅**: 성능 로그에 민감 정보 포함 안 되도록\n• **의존성**: 무거운 라이브러리가 취약점 있는지 확인', 'launch': '런칭 전 보안 체크리스트:\n• [ ] HTTPS 강제 (HTTP → HTTPS 리다이렉트)\n• [ ] 환경 변수 정리 (dev/prod 분리)\n• [ ] 에러 메시지 일반화 (스택 트레이스 숨김)\n• [ ] 로그 레벨 조정 (debug → info)\n• [ ] 민감 엔드포인트 Rate Limiting\n• [ ] 백업/복구 테스트 완료\n• [ ] 보안 헤더 설정 (X-Frame-Options, CSP 등)\n• 파일: vercel.json/nginx.conf, .env.production', 'default': 'OWASP Top 10 체크리스트:\n1. **Injection**: SQL, NoSQL, OS 명령어 주입 방지\n2. **인증 실패**: 세션 관리, 비밀번호 정책\n3. **민감 데이터 노출**: 암호화, HTTPS\n4. **XXE**: XML 파서 설정\n5. **접근 제어**: 인가 로직\n6. **보안 설정 오류**: 디폴트 설정 변경\n7. **XSS**: 입력 이스케이프, CSP\n8. **역직렬화**: 신뢰할 수 없는 데이터 역직렬화 금지\n9. **알려진 취약점**: 의존성 업데이트\n10. **로깅 부족**: 감사 로그, 모니터링'}, 'checklist': ['인증 체크', '권한 체크 (RLS 등)', '입력값 검증', '민감 데이터 암호화', 'SQL Injection 방지', 'XSS 방지'], 'critical_patterns': ['하드코딩된 시크릿', '평문 비밀번호', 'SQL 문자열 연결', 'innerHTML 직접 할당'], 'action_templates': [{'trigger': '보안|security|인증|auth|로그인|login', 'actions': [{'id': 'cso-1', 'action': 'OWASP Top 10 체크리스트 검토', 'depends': [], 'verify': '보안 취약점 없음', 'phase': '설계'}, {'id': 'cso-2', 'action': '입력값 검증 로직 확인', 'depends': [], 'verify': '입력 검증 구현됨', 'phase': '설계'}, {'id': 'cso-3', 'action': '인증/인가 로직 검토', 'depends': [], 'verify': '인증 로직 안전함', 'phase': '설계'}, {'id': 'cso-4', 'action': '민감 데이터 암호화 확인', 'depends': [], 'verify': '암호화 적용됨', 'phase': '검증'}, {'id': 'cso-5', 'action': '보안 코드 리뷰 수행', 'depends': ['cso-1', 'cso-2', 'cso-3'], 'verify': '보안 리뷰 통과', 'phase': '검증'}]}]}
