Notice
Recent Posts
Recent Comments
반응형
오늘도 공부
🚨 SaaS 개발 시 반드시 프롬프트에 넣어야 할 보안 체크리스트 (실전 가이드) 본문
반응형
1. CORS / Preflight
개념
브라우저에서 다른 도메인으로 요청할 때 허용 여부를 서버가 명시.
위협
- 잘못된 Access-Control-Allow-Origin: * → 인증 쿠키 탈취 가능
구현 포인트
- 허용 Origin을 화이트리스트로 제한
- credentials: true 사용 시 * 금지
- Preflight(OPTIONS) 응답 정확히 구성
테스트 기준
- 허용되지 않은 Origin에서 요청 시 차단
- 인증 포함 요청이 예상대로 실패/성공하는지 확인
2. CSRF (Cross-Site Request Forgery)
개념
사용자가 로그인된 상태에서 의도치 않은 요청을 보내게 만드는 공격
위협
- 결제, 계정 변경 등 민감 요청 위조
구현 포인트
- CSRF Token 적용 (Double Submit or SameSite=strict/lax)
- 상태 변경 API는 반드시 보호
테스트 기준
- 토큰 없이 POST/PUT 요청 시 403 발생
3. XSS + CSP
개념
스크립트 삽입 공격 + 이를 방어하는 Content Security Policy
위협
- <script>alert()</script> → 세션 탈취
구현 포인트
- 출력 시 escape (React도 dangerouslySetInnerHTML 금지)
- CSP 헤더 설정 (script-src 'self')
- 사용자 입력 sanitize
테스트 기준
- 스크립트 삽입 시 실행되지 않아야 함
- CSP violation 로그 확인
4. SSRF (Server-Side Request Forgery)
개념
서버가 내부 네트워크로 요청하게 만드는 공격
위협
- http://169.254.169.254 → 클라우드 메타데이터 탈취
구현 포인트
- URL 입력 검증 (화이트리스트 기반)
- 내부 IP 접근 차단
- DNS rebinding 방지
테스트 기준
- 내부 IP 요청 시 실패
5. AuthN / AuthZ
개념
- AuthN: 인증 (누구인지)
- AuthZ: 권한 (무엇을 할 수 있는지)
위협
- 인증 없이 API 접근
- 권한 없는 데이터 접근
구현 포인트
- JWT / Session 기반 인증
- 모든 API에 권한 체크 필수
테스트 기준
- 인증 없이 접근 → 401
- 권한 없는 요청 → 403
6. RBAC / ABAC + 테넌트 격리
개념
- RBAC: 역할 기반
- ABAC: 속성 기반
- 멀티 테넌트 데이터 분리
위협
- A회사 사용자가 B회사 데이터 조회
구현 포인트
- 모든 쿼리에 tenant_id 필터 강제
- role + attribute 기반 정책 적용
테스트 기준
- 다른 테넌트 데이터 접근 불가
7. 최소 권한 (Principle of Least Privilege)
개념
필요한 최소한의 권한만 부여
위협
- DB admin 권한 남용
구현 포인트
- 서비스별 IAM 분리
- 읽기/쓰기 권한 분리
테스트 기준
- 불필요 권한 제거 후 정상 동작 확인
8. Validation + SQL Injection 방어
개념
입력값 검증 + 쿼리 조작 방지
위협
' OR 1=1 --
구현 포인트
- ORM / Prepared Statement 사용
- 입력 스키마 검증 (zod, joi 등)
테스트 기준
- Injection 시도 → 실패
9. Rate Limit / Brute Force 방어
개념
과도한 요청 차단
위협
- 로그인 무차별 대입 공격
구현 포인트
- IP + 계정 기반 rate limit
- exponential backoff
테스트 기준
- 일정 횟수 초과 시 429
10. 쿠키 + 세션 보안
개념
세션 탈취 방지
구현 포인트
- HttpOnly, Secure, SameSite
- 세션 재생성 (login 시)
테스트 기준
- JS에서 쿠키 접근 불가
- HTTPS에서만 전송
11. Secret 관리 + Rotation
개념
API 키, DB 비밀번호 보호
구현 포인트
- .env → Secret Manager 이동
- 주기적 키 교체
테스트 기준
- 코드에 하드코딩된 키 없음
12. HTTPS / HSTS + 보안 헤더
개념
암호화 + 브라우저 강제 HTTPS
구현 포인트
- HSTS 설정
- 보안 헤더:
- X-Frame-Options
- X-Content-Type-Options
- Referrer-Policy
테스트 기준
- HTTP 접속 시 HTTPS 리다이렉트
13. Audit Log
개념
모든 중요 행동 기록
위협
- 침해 사고 시 추적 불가
구현 포인트
- 로그인, 권한 변경, 데이터 수정 로그 기록
- immutable 저장
테스트 기준
- 이벤트 발생 시 로그 생성 확인
14. 에러 노출 차단
개념
내부 정보 외부 노출 방지
위협
- stack trace → 시스템 구조 노출
구현 포인트
- production: generic error message
- 내부 로그는 별도 저장
테스트 기준
- 에러 발생 시 상세 정보 숨김
15. 의존성 취약점 점검
개념
라이브러리 보안 관리
구현 포인트
- npm audit, snyk, dependabot
- 주기적 업데이트
테스트 기준
- known vulnerability 0 또는 허용 수준 이하
🧠 핵심: 프롬프트에 이렇게 강제해야 한다
실제 바이브코딩에서 중요한 건 “설명”이 아니라 출력 제약이다.
👉 반드시 포함해야 할 문장:
위 보안 항목(CORS, CSRF, XSS, SSRF, Auth, RBAC, Validation, RateLimit, Session, Secret, HTTPS, AuditLog 등)을 모두 구현하고,
각 항목별 테스트 코드 및 검증 결과까지 통과한 상태의 코드만 출력하라.
보안 미충족 시 코드를 출력하지 말 것.
🚀 결론
바이브코딩의 리스크는 단순하다:
“빠르게 만들수록 보안은 빠진다”
그래서 전략은 하나다:
👉 프롬프트에서 보안을 강제하고, 테스트 통과 결과만 받는다
이걸 안 하면:
- MVP → 바로 해킹
- SaaS → 데이터 유출
- 투자 → 바로 실패
반응형
'AI' 카테고리의 다른 글
| ClawFlows: OpenClaw 워크플로우 레이어 (0) | 2026.03.23 |
|---|---|
| Ouroboros: AI가 코드를 쓰기 전에, 먼저 “무엇을 만들지”를 끝까지 묻는 시스템 (0) | 2026.03.23 |
| GPT-5.4로 “매력적인 프론트엔드” 만드는 방법 (0) | 2026.03.23 |
| TradingAgents: 여러 에이전트로 동작되는 트레이딩 프레임워크 (0) | 2026.03.23 |
| Postman 대안을 찾는다면, Bruno를 봐야 하는 이유 (0) | 2026.03.23 |
