입력 검증 — 사용자 입력을 처리하기 전에 기대하는 기준을 충족하는지 확인하는 것 — 은 기초적인 보안 관행입니다. 공격은 흔히 악의적인 입력을 통해 들어오므로, 입력을 검증(및 정화)하는 것은 많은 취약점을 예방하는 데 도움이 됩니다. 핵심 원칙: 사용자 입력을 절대 신뢰하지 말 것.
사용자 입력을 절대 신뢰하지 말 것
외부(사용자, API, 파일, 요청)의 모든 입력은 UNTRUSTED — 악의적일 수 있다:
→ 공격자는 취약점을 악용하기 위해 조작된 입력을 보냄(injection, XSS 등)
→ "클라이언트를 절대 신뢰하지 마라" — 입력은 공격을 포함해 무엇이든 될 수 있다
→ 모든 외부 입력을 잠재적으로 적대적인 것으로 검증하고 처리하라.
입력 검증이 하는 일
VALIDATION → 입력이 기대 기준을 충족하는지 확인; 충족하지 않으면 거부:
→ TYPE(숫자인가?), FORMAT(유효한 이메일?), RANGE(0-120?), LENGTH(최대?),
허용 값(화이트리스트), 필수 필드
→ 블록리스트(알려진 악성 거부 — 불완전; 공격자가 우회를 찾음)보다
ALLOWLISTING(알려진 정상 허용)을 선호
→ 유효하지 않은 입력은 안전하게 거부/처리(처리하지 말 것)
