SD-09
🛡️ 보안기능 입력값 검증 (설계)
설계단계 보안설계 · 입력검증
위험도: 상💡 쉽게 말하면
금액이나 권한 같은 값을 화면에서 온 그대로 믿으면, 손님이 가격표를 직접 고쳐 적은 영수증을 그대로 받아주는 것과 같습니다. 중요한 값은 반드시 서버에서 다시 검증하도록 설계해야 합니다.
금액이나 권한 같은 값을 화면에서 온 그대로 믿으면, 손님이 가격표를 직접 고쳐 적은 영수증을 그대로 받아주는 것과 같습니다. 중요한 값은 반드시 서버에서 다시 검증하도록 설계해야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 결제 요청의 금액과 권한 파라미터를 조작해 보낸다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
# 설계 결정
금액·권한을 클라이언트 값 그대로 신뢰
→ 파라미터 변조로 권한상승·금액조작
✓ 안전한 설정
# 설계 결정
보안기능 입력은 서버에서 재검증
범위·형식·권한 일관 검증
→ 변조 입력 거부
🔧 조치 방법
- 보안 결정에 쓰이는 모든 입력은 서버측에서 재검증하도록 설계합니다.
- 금액·수량·권한 등은 서버 기준값과 대조하도록 설계합니다.
- 검증 실패 시 안전하게 거부하는 기본정책을 설계합니다.
✅ 점검 체크리스트
- 보안기능 입력의 서버측 검증이 설계됨
- 기준값 대조가 설계됨
- 실패시 거부 기본값이 설계됨
점검기준: 개발보안 설계기준 1.9 보안기능 입력값 검증