CSP
CSP(Content Security Policy, 콘텐츠 보안 정책)는 웹 페이지가 로딩하거나 실행할 수 있는 콘텐츠의 출처와 실행 방식을 브라우저에 선언하는 보안 체계다. 웹 서버는 주로 Content-Security-Policy 응답 헤더를 통해 정책을 전달하며, HTML의 일부...
| 분류 | 웹 콘텐츠 보안 정책 |
|---|---|
| 정식 명칭 | Content Security Policy |
| 역할 | 브라우저의 자원 로딩·스크립트 실행 제한 |
| 관련 기술 | World Wide Web, HTTP, 웹 브라우저, 웹 서버 |
| 표준 및 참고 | W3C Content Security Policy Level 3 |
CSP(Content Security Policy, 콘텐츠 보안 정책)는 웹 페이지가 로딩하거나 실행할 수 있는 콘텐츠의 출처와 실행 방식을 브라우저에 선언하는 보안 체계다. 웹 서버는 주로 Content-Security-Policy 응답 헤더를 통해 정책을 전달하며, HTML의 일부 메타데이터 형태로 선언할 수도 있다. 정책은 XSS 등 콘텐츠 삽입 취약점의 피해 범위를 줄이는 보조 방어 수단이다.
CSP는 default-src, script-src, style-src, img-src, connect-src, frame-src 등의 지시어를 사용해 자원 유형별 로딩 출처를 제한한다. 각 지시어는 허용할 스킴·호스트 또는 특수 키워드로 구성된 소스 목록을 가진다. 정책이 정의되지 않은 상황에서의 기본 동작과 지시어 간 폴백 관계는 명세에 따라 달라지므로 모든 자원 유형에 동일한 제한이 자동 적용된다고 가정할 수 없다.
인라인 스크립트의 제어에는 nonce와 해시 기반 허용 방법이 제공된다. 이러한 방식은 단순히 unsafe-inline을 허용하는 것보다 실행 가능한 코드를 좁게 정의하는 데 유용하다. 스크립트의 출처뿐 아니라 동적으로 로딩되는 모듈과 삽입된 코드의 실행 경로를 고려하여 정책을 구성해야 한다.
Content-Security-Policy-Report-Only 헤더는 콘텐츠를 차단하지 않고 위반 정보를 수집하는 형태로 정책을 시험할 수 있다. 실제 차단 정책과 보고 전용 정책은 동시에 존재할 수 있으며 보고의 수신과 저장에는 별도의 서버 설정이 필요하다. 보고 데이터에는 페이지 주소 등의 정보가 포함될 수 있어 보존 정책도 중요하다.
CSP는 입력 검증이나 출력 이스케이프를 대체하지 않으며 취약점이 발생했을 때 사용할 수 있는 공격 기법을 제한하는 방어 계층이다. 지나치게 완화된 와일드카드와 인라인 실행 허용은 효과를 약화시킬 수 있다. 개발과 배포 과정에서는 정책 위반 로그를 분석해 정상 기능을 유지하면서 제약을 점진적으로 강화한다.[1]