script-src
Content-Security-Policy Fetch

개요

script-src 는 페이지가 실행할 수 있는 JavaScript 소스를 제어하는, CSP에서 가장 중요한 XSS 방어 지시어입니다. 외부 <script src> 로딩과 인라인 스크립트, eval() 계열 실행을 모두 관장합니다. 미지정 시 default-src 를 상속합니다.

자세히

허용 소스로 'self', 호스트/스킴 소스, 그리고 인라인 코드 제어용 특수 키워드를 조합합니다. 'unsafe-inline' 은 인라인 <script> 와 이벤트 핸들러 속성을 모두 허용하지만 XSS 방어를 사실상 무력화하므로 피해야 합니다. 대신 'nonce-값'(요청마다 새로 생성하는 임의 토큰) 또는 'sha256-...' 해시로 신뢰하는 인라인 스크립트만 개별 허용하는 것이 현대적 접근입니다. 'unsafe-eval' 은 eval·new Function·setTimeout(string) 등을 허용하는데, 이 역시 공격면을 넓히므로 가급적 제거합니다.

대규모 사이트에서는 'strict-dynamic' 이 권장됩니다. nonce 또는 해시로 신뢰된 스크립트가 동적으로 삽입한 하위 스크립트를 자동 신뢰하고, 대신 호스트 화이트리스트('self' 나 https://cdn... 같은 목록)는 무시합니다. 이렇게 하면 화이트리스트 우회(오픈 리다이렉트, JSONP 등)로 인한 CSP 우회를 막을 수 있어 nonce + 'strict-dynamic' 조합이 구글이 권장하는 견고한 패턴입니다.

문법

Content-Security-Policy: script-src 'self' 'nonce-r4nd0m' 'strict-dynamic'

실무 참고

관련 지시어