SD-05
🌐 웹 서비스 요청 및 결과 검증 (설계)
설계단계 보안설계 · 입력검증
위험도: 상💡 쉽게 말하면
서버가 외부 주소로 대신 요청을 보내거나 입력을 화면에 그대로 출력하면, 심부름꾼을 시켜 금지구역에 들여보내거나 손님 글을 그대로 게시판에 붙이는 것과 같습니다. 호출 도메인은 화이트리스트로 제한하고 출력은 인코딩하도록 설계해야 합니다.
서버가 외부 주소로 대신 요청을 보내거나 입력을 화면에 그대로 출력하면, 심부름꾼을 시켜 금지구역에 들여보내거나 손님 글을 그대로 게시판에 붙이는 것과 같습니다. 호출 도메인은 화이트리스트로 제한하고 출력은 인코딩하도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 서버가 내부망 주소로 요청하게 하거나 스크립트를 입력한다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
입력 URL로 서버가 임의 요청
외부 데이터를 그대로 화면 출력
→ SSRF / XSS
✓ 안전한 설정
# 설계 결정
호출 대상 도메인 화이트리스트
출력 시 컨텍스트별 인코딩 표준화
→ 내부망 접근·스크립트 실행 차단
🔧 조치 방법
- 서버측 외부 요청은 허용 도메인/내부망 차단 정책을 설계에 포함합니다(SSRF 대응).
- 모든 외부 데이터 출력은 컨텍스트별 인코딩을 적용하도록 설계합니다(XSS 대응).
- 응답 결과의 유효성도 검증하도록 설계합니다.
✅ 점검 체크리스트
- 외부요청 대상 제한이 설계됨
- 출력 인코딩 표준이 정의됨
- 응답 검증이 설계됨
점검기준: 개발보안 설계기준 1.5 웹 서비스 요청 및 결과 검증