SD-10

📁 업로드·다운로드 파일 검증 (설계)

설계단계 보안설계 · 입력검증

위험도: 상
💡 쉽게 말하면
업로드 파일을 검사 없이 받고 실행 가능한 자리에 두면, 위험물 가방을 검색대 없이 들여보내는 것과 같습니다. 확장자와 MIME을 화이트리스트로 거르고 실행권한을 제거해 웹루트 밖에 저장하도록 설계해야 합니다.

🎯 직접 해보기 — 공격을 실행해 보세요

아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.

현재: 취약한 설정 — 공격이 통할까요?
# 서버에서 실행되는 스크립트 파일을 업로드한다 # [공격 실행] 버튼을 누르면 시작합니다.

📋 설정 비교 (왜 막혔나?)

✗ 취약한 설정
# 설계 결정 확장자 검증 없이 웹 경로에 저장 다운로드 경로를 입력값으로 결정 → 웹쉘 / 임의 파일 다운로드
✓ 안전한 설정
# 설계 결정 확장자·MIME 화이트리스트 + 실행권한 제거 저장은 웹루트 외부, 식별자 매핑 다운로드 → 업로드 실행·경로 이탈 차단

🔧 조치 방법

  1. 업로드는 확장자/콘텐츠 타입 화이트리스트와 크기 제한을 설계에 포함합니다.
  2. 저장 위치는 웹 실행경로 밖으로, 실행권한을 제거하도록 설계합니다.
  3. 다운로드는 실제 경로 대신 식별자→경로 매핑으로 처리하도록 설계합니다.

✅ 점검 체크리스트

  • 업로드 화이트리스트가 설계됨
  • 웹루트 외부 저장이 설계됨
  • 식별자 매핑 다운로드가 설계됨
점검기준: 개발보안 설계기준 1.10 업로드·다운로드 파일 검증