보안 코딩을 위한 효과적인 프롬프트 패턴을 알아봅니다.
보안 프롬프트 구조
취약점 분석
코드 리뷰
다음 코드의 보안 취약점을 분석해줘.
[코드]
확인 항목:
- SQL Injection
- XSS
- CSRF
- 인증/인가 문제
- 정보 노출
- 안전하지 않은 설정
각 취약점에 대해:
- 위험도 (상/중/하)
- 공격 시나리오
- 수정 방법
OWASP Top 10 점검
이 코드를 OWASP Top 10 기준으로 점검해줘.
[애플리케이션 코드]
각 항목 확인:
1. Injection
2. Broken Authentication
3. Sensitive Data Exposure
4. XXE
5. Broken Access Control
6. Security Misconfiguration
7. XSS
8. Insecure Deserialization
9. Using Components with Known Vulnerabilities
10. Insufficient Logging
입력 검증
SQL Injection 방지
SQL Injection을 방지하는 코드로 수정해줘.
현재 코드:
const query = `SELECT * FROM users WHERE id = ${userId}`;
요구사항:
- Prepared Statement 사용
- 파라미터 바인딩
- 입력값 타입 검증
- 에러 메시지 보안
XSS 방지
XSS를 방지하는 코드를 작성해줘.
시나리오: 사용자 입력 댓글 표시
요구사항:
- 입력 검증
- 출력 인코딩
- CSP 헤더 설정
- React에서의 안전한 렌더링
- sanitize-html 사용 예시
입력 검증 함수
종합적인 입력 검증 유틸리티를 만들어줘.
검증 대상:
- 이메일
- 전화번호
- URL
- 파일명
- HTML 콘텐츠
요구사항:
- 화이트리스트 방식
- 정규표현식 검증
- 길이 제한
- 특수문자 처리
인증/인가
안전한 인증
안전한 인증 시스템을 구현해줘.
요구사항:
- 비밀번호 해싱 (bcrypt)
- 솔트 처리
- 토큰 생성/검증
- 브루트포스 방지
- 세션 관리
포함 사항:
- 비밀번호 정책
- 로그인 시도 제한
- 안전한 비밀번호 재설정
- 2FA 통합 준비
권한 검사
역할 기반 접근 제어를 구현해줘.
역할:
- Admin: 모든 권한
- Editor: 콘텐츠 수정
- Viewer: 읽기 전용
요구사항:
- RBAC 구현
- 미들웨어 형태
- 리소스별 권한
- 권한 상속
- 감사 로그
데이터 보호
암호화
민감 데이터 암호화 시스템을 만들어줘.
대상:
- 개인정보 (PII)
- 결제 정보
- 세션 데이터
요구사항:
- AES-256 암호화
- 키 관리
- 전송 중 암호화 (TLS)
- 저장 시 암호화
- 키 로테이션
토큰 관리
안전한 JWT 구현을 작성해줘.
요구사항:
- Access Token + Refresh Token
- 적절한 만료 시간
- 안전한 서명 알고리즘
- 토큰 무효화 전략
- XSS/CSRF 방지
포함:
- 토큰 생성
- 검증 미들웨어
- 갱신 로직
- 블랙리스트 (선택)
API 보안
Rate Limiting
Rate Limiting을 구현해줘.
요구사항:
- IP 기반 제한
- 사용자 기반 제한
- 엔드포인트별 설정
- 슬라이딩 윈도우
설정:
- 일반 API: 100 req/min
- 로그인: 5 req/min
- 검색: 30 req/min
Redis 기반 구현
API 키 관리
안전한 API 키 시스템을 만들어줘.
기능:
- 키 생성 (안전한 랜덤)
- 키 해싱 저장
- 키 검증
- 키 범위 제한 (스코프)
- 키 만료 관리
보안 고려:
- 키 노출 방지
- 사용량 추적
- 키 로테이션
로깅/모니터링
보안 로깅
보안 이벤트 로깅 시스템을 구현해줘.
로깅 대상:
- 로그인 성공/실패
- 권한 변경
- 민감 데이터 접근
- 의심스러운 활동
요구사항:
- 민감 정보 마스킹
- 변조 방지
- 검색 가능한 형식
- 보존 기간 설정
이상 탐지
이상 행동 탐지 로직을 작성해줘.
탐지 대상:
- 비정상적 로그인 패턴
- 대량 데이터 요청
- 권한 밖 접근 시도
- 짧은 시간 내 다수 실패
알림:
- 임계값 설정
- 알림 발송
- 자동 차단 (선택)
실전 프롬프트
보안 체크리스트
이 웹 애플리케이션의 보안 체크리스트를 만들어줘.
기술 스택:
- Next.js
- PostgreSQL
- NextAuth.js
- AWS 배포
체크 항목:
1. 인증/세션 관리
2. 입력 검증
3. 출력 인코딩
4. 접근 제어
5. 암호화
6. 에러 처리
7. 로깅
8. 설정 보안
9. API 보안
10. 의존성 관리
각 항목별 구체적 점검 사항과 코드 예시
취약점 수정
다음 보안 취약점들을 수정해줘.
취약점 보고서:
1. 평문 비밀번호 저장
2. SQL Injection in search
3. Missing CSRF token
4. Sensitive data in URL
5. Verbose error messages
각 취약점에 대해:
- 현재 코드
- 수정된 코드
- 추가 권장사항
팁
| 팁 | 설명 |
|---|---|
| 코드 전체 제공 | 컨텍스트 파악 |
| 기술 스택 명시 | 프레임워크별 보안 |
| 위협 모델 | 공격 시나리오 설명 |
| 규정 언급 | GDPR, HIPAA 등 |
| 우선순위 | 심각도 순서 |
보안은 시작부터 고려해야 합니다.