6.컨텐츠 보안 정책
컨텐츠 보안 정책, Content Security Policy(CSP)는 웹 애플리케이션이 XSS와 같은 취약점 공격에 대비하기 위한 방식으로,
애플리케이션이 특정 리소스를 로드할 것으로 예상되는 URL 경로에 대해 HTTP 응답 헤더 옵션을 통해 브라우저(User Agent)에게 미리 선언하여,
선별적으로 리소스를 로드하거나 차단할 수 있도록 적용할 수 있는 정책을 의미
부가적으로는 허용되지 않은 URL에 대한 리소스로의 차단 내역 등을 결과로 담아 일련의 리포트로 전달받을 수 있음(주로 JSON 포맷)
2. Content-Security-Policy Header
이러한 컨텐츠 보안 정책을 적용하기 위해서는 Content-Security-Policy라는 응답 헤더 옵션을 통해 브라우저에게 특정 컨텐츠 리소스만 다운, 실행할 수 있도록 지시할 수 있음,
따라서 공격자가 악성 스크립트를 삽입(Injection)하더라도, 해당 스크립트는 허용된 목록에 포함되어 있지 않기 때문에 실행되지 않게 됨
→ 인라인 스크립트 제외, 인라인 스크립트는 CSP에서 막을 수 없음
이러한 CSP는 크게 2가지 옵션으로 구분됨
1-1. Content-Security-Policy
컨텐츠 보안 정책을 적용하고, 리소스 로딩을 제한할 때 사용하는 헤더 옵션
Content-Security-Policy1-2. Content-Security-Policy-Report-Only
컨텐츠 보안 정책 미적용, 리포트만 받는 용도, 주로 실제 CSP 정책을 적용하기 전 테스트 용도로 사용
Content-Security-Policy-Report-Only이러한 헤더 옵션들은 클라이언트(브라우저)에게 보안 정책(Security Policy)을 제공하는 용도로 활용되는데,
개별 보안 정책은 보안 정책 용도의 디렉티브(Directive)들을 포함하고 있으며, 각각의 디렉티브를 통해 특정 리소스를 표현하는 것에 대한 제한점들을 선언할 수 있음
디렉티브(directive)
지시문, 각 헤더 옵션에 세부적으로 적용할 수 있는 하위 옵션