사이트모음의 검색어·설명을 innerHTML 같은 injection sink에 문자열로 넣으면 조작된 입력이 DOM 기반 XSS로 이어질 수 있습니다. Trusted Types API는 위험한 입력이 개발자가 정의한 변환 함수를 거친 객체인지 확인할 수 있는 구조를 제공합니다.
주소모음은 TrustedHTML을 생성하는 정책에서 콘텐츠를 정화하고 링크모음은 기존 sink 호출을 안전한 DOM API로 교체할 수 있습니다. 정책 이름만 만든다고 입력이 자동 정화되지는 않으며 변환 함수의 구현과 검증이 핵심입니다.
사이트모음 Trusted Types 구성과 비교표TrustedTypePolicy는 입력을 TrustedHTML·TrustedScript 같은 타입으로 바꾸는 규칙을 가질 수 있습니다. 하지만 API만 사용하면 다른 코드가 계속 일반 문자열을 sink에 넣을 수 있어 CSP require-trusted-types-for 'script'로 강제해야 차단 효과를 얻습니다.
| 구성 요소 | 역할 | 실패 결과 | 검수 항목 |
|---|---|---|---|
| createPolicy | 변환 정책 생성 | 이름·규칙 오류 | sanitizer 구현 |
| TrustedHTML | 검증된 타입 객체 | 생성 실패 | 입력·출력 비교 |
| require directive | sink 타입 강제 | 문자열 TypeError | Report-Only 결과 |
| 주소모음 trusted-types | 정책 이름 허용 | 미허용 정책 차단 | 최소 allowlist |
| 링크모음 DOM API | sink 감소 | 기능 회귀 | textContent 우선 |
CSP의 trusted-types 지시자는 생성 가능한 정책 이름을 제한합니다. 너무 넓은 기본 정책이나 입력을 그대로 반환하는 변환은 형식만 Trusted Type으로 포장해 보호 목적을 무너뜨릴 수 있습니다.
DOM XSS 정책을 확인하는 6단계- innerHTML, document.write 등 injection sink 사용 지점을 목록화합니다.
- 각 입력의 출처, 인코딩과 필요한 출력 형식을 분류합니다.
- 가능한 코드는 textContent·DOM 생성 API로 교체합니다.
- 검증된 sanitizer를 쓰는 최소 정책과 이름을 정의합니다.
- CSP Report-Only에서 위반·TypeError와 기능 회귀를 수집합니다.
- 강제 모드와 미지원 브라우저에서 로그인·검색·편집을 재검수합니다.
보고서에 사용자 입력 전체나 토큰을 남기지 않습니다. 위반 수만 줄이려고 default policy가 모든 문자열을 허용하게 만들지 말고 sink별 소유 팀과 수정 기한을 기록합니다.
주소가자 보안 기록과 적용 한계주소가자 점검표에는 sink, 입력 출처, 정책 이름, 변환 함수, CSP 모드, 회귀 결과를 둡니다. 주소가자에서 TypeError가 사라졌다는 사실과 입력 정화가 정확하다는 판단을 구분합니다.
운영자는 최신 지원 환경과 레거시 브라우저를 따로 시험합니다. Trusted Types는 서버 출력 인코딩, 일반 CSP, 의존성 관리와 보안 검토를 대체하지 않는 방어 계층입니다.
사이트모음 Trusted Types 보안 확인 바로가기사이트모음 Trusted Types 보안 확인 바로가기
자주 묻는 질문
사이트모음에서 Trusted Types API만 호출하면 DOM XSS가 차단되나요?
아닙니다. 정책 변환이 안전해야 하고 CSP 강제로 일반 문자열의 sink 입력을 제한해야 합니다. 다른 XSS 경로도 별도 통제가 필요합니다.
주소모음 default policy가 모든 HTML을 반환해도 괜찮나요?안 됩니다. 신뢰되지 않은 입력을 그대로 반환하면 타입 이름만 바뀝니다. 허용 요소·속성을 제한하는 검증된 정화 규칙을 사용하세요.
링크모음에서 trusted-types 정책 이름을 *로 허용하면 편한가요?예상하지 않은 코드가 임의 정책을 만들 수 있어 통제가 약해집니다. 필요한 정책 이름만 허용하고 생성 위치를 검수하세요.
사이트모음 Trusted Types 확인 결론DOM XSS 통제는 sink 목록, 안전한 DOM API, 검증된 변환 정책과 CSP 강제를 연결해야 합니다. Report-Only로 위반과 회귀를 확인한 뒤 최소 정책 이름만 허용하면 일반 문자열이 실행 가능한 DOM으로 전달되는 경로를 단계적으로 줄일 수 있습니다.
#TrustedTypes #DOMXSS #ContentSecurityPolicy #TrustedHTML #injectionSink #sanitizer #ReportOnly #웹보안 #바로가기 #2026년
-
이전 글
-
다음 글
