Security Engineer · XSS

문맥별 출력 인코딩 기준표

입력값은 출력 위치에 따라 위험 문자가 달라진다. HTML 본문, 속성, 스크립트 문맥을 먼저 나누고 그 위치에서 인코딩한다.

01

저장 위치 확인

댓글, 프로필, 검색어가 어디에 저장되거나 반사되는지 본다.

02

출력 문맥 식별

본문, 속성, URL, 스크립트 중 들어가는 위치를 구분한다.

03

문맥별 인코딩

해당 문맥에 맞는 escaping을 출력 지점에서 적용한다.

04

실행 차단 보강

CSP, HttpOnly, sanitizing으로 피해와 우회를 줄인다.

HTML body <, >, & 인코딩

태그가 새로 만들어지지 않게 엔티티로 출력한다.

Attribute 따옴표와 이벤트 속성 차단

속성 경계가 깨지면 onerror 같은 이벤트가 삽입된다.

Script 코드 안 직접 삽입 금지

JSON 직렬화와 nonce 기반 CSP로 실행 경로를 제한한다.

입력 검증 한계

저장 전 필터만 믿지 말고 출력 지점에서 인코딩한다.

DOM sink

innerHTML, document.write, location 조작을 점검한다.

쿠키 보호

HttpOnly는 피해를 줄이지만 XSS 자체를 없애지는 않는다.