require-trusted-types-for
Content-Security-Policy Document

개요

require-trusted-types-for 는 DOM 의 위험한 싱크(innerHTML, script.src, eval 등)에 문자열을 직접 대입하지 못하게 하고, 반드시 Trusted Types 객체를 거치도록 강제하는 지시어입니다. 값으로 'script' 를 지정해 DOM 기반 XSS(sink 인젝션)를 구조적으로 차단합니다.

자세히

전통적 CSP(script-src 등)는 리소스 로딩·인라인 실행은 막지만, element.innerHTML = untrustedString 같은 클라이언트 사이드 DOM XSS 는 완전히 막지 못합니다. require-trusted-types-for 'script' 를 켜면 브라우저가 위험한 DOM 싱크에 순수 문자열 대입을 거부하고, 개발자가 정의한 Trusted Types 정책을 통과한 TrustedHTML·TrustedScript·TrustedScriptURL 객체만 허용합니다. 이렇게 하면 위험 데이터가 반드시 한 곳(정책 함수)을 거치게 되어 감사·정화가 집중됩니다.

이 지시어는 trusted-types 지시어(허용할 정책 이름 목록 정의)와 짝을 이룹니다. 도입 시 기존 코드가 DOM 싱크에 문자열을 직접 쓰던 부분이 모두 예외를 던지므로, Report-Only 모드로 위반을 수집해 리팩터링 지점을 파악한 뒤 단계적으로 강제하는 것이 현실적입니다. 현재 Chromium 계열 중심으로 지원됩니다.

문법

Content-Security-Policy: require-trusted-types-for 'script'

실무 참고

관련 지시어