WEBBOOK CHAPTER

기능이 아니라 경계를 지키는 웹 보안: 7장. 입력 검증과 출력 encoding을 분리한다

7장. 입력 검증과 출력 encoding을 분리한다

입력 검증은 업무에 허용되는 형태와 범위를 확인하고, 출력 encoding은 HTML·URL·JavaScript·SQL·shell 같은 목적 문맥에서 해석을 막는다. allowlist와 구조화 parser를 우선한다. 길이, 개수, 중첩, 압축 해제 크기로 resource 고갈도 제한한다.

SQL은 parameterized query, OS 명령은 가능하면 library API를 사용한다. HTML sanitizer가 필요한 rich text는 검증된 library와 고정 policy를 쓴다. validation 오류에 내부 schema와 stack을 노출하지 않는다.


select * from reservation where tenant_id=$1 and id=$2;