SD-07
📨 HTTP 프로토콜 유효성 검증 (설계)
설계단계 보안설계 · 입력검증
위험도: 중💡 쉽게 말하면
HTTP 입력에 줄바꿈 기호를 끼우면, 한 장의 편지에 가짜 봉투를 한 장 더 끼워 넣는 것과 같습니다. CR/LF를 제거하고, 이동할 주소는 허용 목록으로만 보내도록 설계해야 합니다.
HTTP 입력에 줄바꿈 기호를 끼우면, 한 장의 편지에 가짜 봉투를 한 장 더 끼워 넣는 것과 같습니다. CR/LF를 제거하고, 이동할 주소는 허용 목록으로만 보내도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 리다이렉트 주소와 헤더에 줄바꿈/외부 주소를 끼운다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
입력값을 헤더/Location에 그대로 반영
→ HTTP 응답분할 / 오픈 리다이렉트
✓ 안전한 설정
# 설계 결정
CR/LF 제거·헤더 API 사용
리다이렉트 대상 화이트리스트
→ 헤더 변조·외부 유도 차단
🔧 조치 방법
- 헤더 값에 들어가는 입력의 개행(CR/LF)을 제거하고 안전한 헤더 API를 쓰도록 설계합니다.
- 리다이렉트 대상은 허용 목록으로만 결정하도록 설계합니다.
- 허용 메서드를 명시적으로 제한합니다.
✅ 점검 체크리스트
- 헤더 개행 제거가 설계됨
- 리다이렉트 화이트리스트가 정의됨
점검기준: 개발보안 설계기준 1.7 HTTP 프로토콜 유효성 검증