콘텐츠 보안 정책

콘텐츠 보안 정책(Content Security Policy, CSP)은 신뢰된 웹 페이지 콘텍스트에서 악의적인 콘텐츠를 실행하게 하는 사이트 간 스크립팅(XSS), 클릭재킹, 그리고 기타 코드 인젝션 공격을 예방하기 위해 도입된 컴퓨터 보안 표준이다. 웹 애플리케이션 보안의 W3C 워킹 그룹의 후보 권고안이며 현대의 웹 브라우저에 폭넓게 지원된다. CSP는 웹사이트 소유자들이 승인된 콘텐츠 오리진(origin)을 선언할 수 있게 하는 표준 방식을 제공하며, 이를 통해 해당 웹사이트들로부터 브라우저들이 자바스크립트, CSS, 프레임, 웹 워커, 글꼴, 이미지, 그리고 자바 애플릿, 액티브X, 오디오 및 비디오 파일, 그리고 기타 HTML5 기능들을 사용할 수 있게 허용이 가능해진다.

현황 
이 표준의 원래 이름은 Content Restrictions였으며 2004년 로버트 한센에 의해 제안되었고, 파이어폭스 4에 처음 구현되었고 이후 빠르게 다른 브라우저들에도 도입되었다. 이 표준의 버전 1은 2012년 W3C 후보 권고안으로 출판되었으며 2014년 빠르게 차기 버전(레벨 2)이 등장하였다. 2015년 기준으로 레벨 3 초안이 개발되고 있으며, 새 기능들이 웹 브라우저에 빠르게 채택되고 있다.

다음의 헤더 이름들은 실험적인 CSP 구현체들 중 일부에 사용되고 있다:

 Content-Security-Policy – W3C 문서가 제안한 표준 헤더 이름. 구글 크롬은 버전 25 기준으로 이것을 지원한다. 파이어폭스는 버전 23 기준으로 이것을 지원한다.(2013년 8월 6일 출시) 웹킷은 버전 528(나이틀리 빌드) 기준으로 이것을 지원한다.
 X-WebKit-CSP – 구식. 실험적인 헤더이며 구글 크롬 및 기타 웹킷 기반 브라우저(사파리)에 2011년 도입되었다.
 X-Content-Security-Policy – 구식. 실험적인 헤더이며 게코 2 기반 브라우저(파이어폭스 4 ~ 파이어폭스 22, 선더버드 3.3, 씨몽키 2.1)에 도입되었다.

웹사이트는 여러 개의 CSP 헤더들을 선언할 수 있으며, 강제 및 보고 전용을 섞을 수도 있다. 각 헤더는 브라우저에 의해 개별적으로 처리된다.

CSP는 HTML 메타 태그를 사용하여 HTML 코드 안에 선언할 수 있으나, 이 경우 효율성은 제한을 받는다.

인터넷 익스플로러 10과 인터넷 익스플로러 11 또한 CSP를 지원하지만 실험적인 X-Content-Security-Policy 헤더를 이용한 샌드박스 디렉티브로만 지원한다.

수많은 웹 애플리케이션 프레임워크들은 CSP를 지원하는데, 이를테면 AngularJS(네이티브로), 장고(미들웨어)를 들 수 있다. 루비 온 레일즈를 위한 지침들이 깃허브에 게시되었다. 그러나 웹 프레임워크 지원은 CSP 콘텐츠가 웹 애플리케이션의 상태에 어느 정도 의존하는 경우에만 필요하다. (예: nonce 오리진 사용) 그 밖의 경우 CSP는 정적이며 이를테면 부하분산이나 웹 서버 등에서 애플리케이션보다 더 높은 웹 애플리케이션 티어로부터 전달될 수 있다.

각주

외부 링크 
 Content Security Policy W3C Working Draft
 Generate your CSP
 Online Test of CSPd
 CSP Tester (browser extension)
 Secure Coding Guidelines for Content Security Policy
 CSP Violation Reporting
 CSP Deployment Survey 
 CSP Validator
 Content Security Policy (CSP) on MDN 웹 문서

웹 애플리케이션
웹 취약점 공격
컴퓨터 보안 표준