SD-09

🛡️ 보안기능 입력값 검증 (설계)

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

위험도: 상
💡 쉽게 말하면
금액이나 권한 같은 값을 화면에서 온 그대로 믿으면, 손님이 가격표를 직접 고쳐 적은 영수증을 그대로 받아주는 것과 같습니다. 중요한 값은 반드시 서버에서 다시 검증하도록 설계해야 합니다.

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

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

현재: 취약한 설정 — 공격이 통할까요?
# 결제 요청의 금액과 권한 파라미터를 조작해 보낸다 # [공격 실행] 버튼을 누르면 시작합니다.

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

✗ 취약한 설정
# 설계 결정 금액·권한을 클라이언트 값 그대로 신뢰 → 파라미터 변조로 권한상승·금액조작
✓ 안전한 설정
# 설계 결정 보안기능 입력은 서버에서 재검증 범위·형식·권한 일관 검증 → 변조 입력 거부

🔧 조치 방법

  1. 보안 결정에 쓰이는 모든 입력은 서버측에서 재검증하도록 설계합니다.
  2. 금액·수량·권한 등은 서버 기준값과 대조하도록 설계합니다.
  3. 검증 실패 시 안전하게 거부하는 기본정책을 설계합니다.

✅ 점검 체크리스트

  • 보안기능 입력의 서버측 검증이 설계됨
  • 기준값 대조가 설계됨
  • 실패시 거부 기본값이 설계됨
점검기준: 개발보안 설계기준 1.9 보안기능 입력값 검증