{{위키데이터 속성 추적}}
'''콘텐츠 보안 정책'''(Content Security Policy, CSP)은 신뢰된 [[웹 페이지]] 콘텍스트에서 악의적인 콘텐츠를 실행하게 하는 [[사이트 간 스크립팅]](XSS), [[클릭재킹]], 그리고 기타 [[코드 인젝션]] 공격을 예방하기 위해 도입된 [[컴퓨터 보안]] 표준이다.<ref name="Stamm 2009">{{웹 인용|url=https://wiki.mozilla.org/index.php?title=Security/CSP/Spec&oldid=133465|title=Security/CSP/Spec - MozillaWiki|author=Sid Stamm|work=wiki.mozilla.org|date=2009-03-11 |accessdate=2011-06-29 |quote=Content Security Policy is intended to help web designers or server administrators specify how content interacts on their web sites. It helps mitigate and detect types of attacks such as XSS and data injection.}}</ref> 웹 애플리케이션 보안의 [[W3C]] 워킹 그룹의 후보 권고안이며<ref name="CSPstatus">{{웹 인용|url=http://www.w3.org/TR/CSP/#sotd|title=State of the draft|date=2016-09-13 |accessdate=2016-10-05}}</ref> 현대의 [[웹 브라우저]]에 폭넓게 지원된다.<ref name="caniuse"/> CSP는 웹사이트 소유자들이 승인된 콘텐츠 오리진(origin)을 선언할 수 있게 하는 표준 방식을 제공하며, 이를 통해 해당 웹사이트들로부터 브라우저들이 [[자바스크립트]], [[종속형 시트|CSS]], [[프레임 (월드 와이드 웹)|프레임]], [[웹 워커]], [[웹 타이포그래피|글꼴]], 이미지, 그리고 [[자바 애플릿]], [[액티브X]], 오디오 및 비디오 파일, 그리고 기타 [[HTML5]] 기능들을 사용할 수 있게 허용이 가능해진다.

== 현황 ==
이 표준의 원래 이름은 Content Restrictions였으며 2004년 로버트 한센에 의해 제안되었고,<ref name="Hansen 2009">{{웹 인용|url=http://ha.ckers.org/blog/20090701/mozillas-content-security-policy/ |author=Robert Hansen |date=2009-06-01 |title=Mozilla's Content Security Policy |accessdate=2011-06-29 |quote=Content Restrictions - a way for websites to tell the browser to raise their security on pages where the site knows the content is user submitted and therefore potentially dangerous. |url-status=dead |archiveurl=https://web.archive.org/web/20150318224529/http://ha.ckers.org/blog/20090701/mozillas-content-security-policy/ |archivedate=March 18, 2015 }}</ref> [[파이어폭스 4]]에 처음 구현되었고 이후 빠르게 다른 브라우저들에도 도입되었다. 이 표준의 버전 1은 2012년 W3C 후보 권고안으로 출판되었으며<ref>{{웹 인용| url=http://www.w3.org/TR/2012/CR-CSP-20121115/ | title=Content Security Policy 1.0 | publisher=W3C | accessdate=2015-11-13}}</ref> 2014년 빠르게 차기 버전(레벨 2)이 등장하였다. 2015년 기준으로 레벨 3 초안이 개발되고 있으며, 새 기능들이 웹 브라우저에 빠르게 채택되고 있다.<ref>{{웹 인용| url=https://w3c.github.io/webappsec-csp/ | title=Content Security Policy Level 3 | publisher=W3C | accessdate=2015-11-13}}</ref>

다음의 헤더 이름들은 실험적인 CSP 구현체들 중 일부에 사용되고 있다:<ref name="caniuse">{{웹 인용| url=http://caniuse.com/contentsecuritypolicy | title=Can I use Content Security Policy? | publisher=Fyrd | accessdate=February 22, 2013}}</ref>

* <code>Content-Security-Policy</code> – W3C 문서가 제안한 표준 헤더 이름. [[구글 크롬]]은 버전 25 기준으로 이것을 지원한다.<ref>{{웹 인용| url=https://blog.chromium.org/2013/01/content-security-policy-and-shadow-dom.html | title=Chrome 25 Beta: Content Security Policy and Shadow DOM | publisher=Google | date=January 14, 2013 | accessdate=February 22, 2013}}</ref> 파이어폭스는 버전 23 기준으로 이것을 지원한다.<ref>{{웹 인용| url=https://hacks.mozilla.org/2013/05/content-security-policy-1-0-lands-in-firefox-aurora/ | title=Content Security Policy 1.0 lands in Firefox Aurora | publisher=Mozilla Foundation | date=May 29, 2013 | accessdate=June 16, 2013}}</ref>(2013년 8월 6일 출시)<ref>{{웹 인용| url=https://wiki.mozilla.org/RapidRelease/Calendar | title=RapidRelease/Calendar | publisher=Mozilla Foundation | date=May 29, 2013 | accessdate=June 16, 2013}}</ref> [[웹킷]]은 버전 528(나이틀리 빌드) 기준으로 이것을 지원한다.<ref>{{웹 인용| url=https://bugs.webkit.org/show_bug.cgi?id=96765 | title=Bug 96765 - Implement the "Content-Security-Policy" header | publisher=WebKit | date=October 31, 2012 | accessdate=August 7, 2015}}</ref>
* <code>X-WebKit-CSP</code> – 구식. 실험적인 헤더이며 [[구글 크롬]] 및 기타 [[웹킷]] 기반 브라우저([[사파리 (웹 브라우저)|사파리]])에 2011년 도입되었다.<ref>{{웹 인용| url=https://blog.chromium.org/2011/06/new-chromium-security-features-june.html | title=New Chromium security features, June 2011 | publisher=Google | date=June 14, 2011 | accessdate=February 22, 2013}}</ref>
* <code>X-Content-Security-Policy</code> – 구식. 실험적인 헤더이며 [[게코 (레이아웃 엔진)|게코 2]] 기반 브라우저(파이어폭스 4 ~ 파이어폭스 22, 선더버드 3.3, 씨몽키 2.1)에 도입되었다.<ref>{{웹 인용| url=https://developer.mozilla.org/en-US/docs/Security/CSP/Introducing_Content_Security_Policy | title=Introducing Content Security Policy | publisher=Mozilla Foundation | accessdate=February 22, 2013}}</ref>

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

CSP는 [[메타 엘리먼트|HTML 메타]] 태그를 사용하여 HTML 코드 안에 선언할 수 있으나, 이 경우 효율성은 제한을 받는다.<ref>{{웹 인용| url=http://www.w3.org/TR/CSP2/#delivery-html-meta-element | title=HTML META element | publisher=W3C | work=Content Security Policy Level 2 | accessdate=2015-11-14}}</ref>

[[인터넷 익스플로러 10]]과 [[인터넷 익스플로러 11]] 또한 CSP를 지원하지만 실험적인 <code>X-Content-Security-Policy</code> 헤더를 이용한 샌드박스 디렉티브로만 지원한다.<ref>{{웹 인용| url=http://blogs.msdn.com/b/ie/archive/2011/07/14/defense-in-depth-locking-down-mash-ups-with-html5-sandbox.aspx | title=Defense in Depth: Locking Down Mash-Ups with HTML5 Sandbox | publisher=Windows Internet Explorer Engineering Team | accessdate=April 13, 2014}}</ref>

수많은 웹 애플리케이션 프레임워크들은 CSP를 지원하는데, 이를테면 [[AngularJS]]<ref>{{웹 인용|url=http://docs.angularjs.org/api/ng.directive:ngCsp |title=ngCsp directive |publisher=AngularJS}}</ref>(네이티브로), [[장고 (웹 프레임워크)|장고]](미들웨어)를 들 수 있다.<ref>{{웹 인용|url=https://github.com/sdelements/django-security |title=django-security}}</ref> [[루비 온 레일즈]]를 위한 지침들이 [[깃허브]]에 게시되었다.<ref>{{웹 인용|url=https://github.com/blog/1477-content-security-policy |title=Content security policy |publisher=GitHub}}</ref> 그러나 웹 프레임워크 지원은 CSP 콘텐츠가 웹 애플리케이션의 상태에 어느 정도 의존하는 경우에만 필요하다. (예: <code>nonce</code> 오리진 사용) 그 밖의 경우 CSP는 정적이며 이를테면 [[부하분산]]이나 [[웹 서버]] 등에서 애플리케이션보다 더 높은 [[다층 구조|웹 애플리케이션 티어]]로부터 전달될 수 있다.

== 같이 보기 ==
* [[동일-출처 정책]]
* [[노스크립트]]
* [[HTTP 스트릭트 트랜스포트 시큐리티]]
== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://www.w3.org/TR/CSP/ Content Security Policy W3C Working Draft]
* [https://report-uri.io/home/generate Generate your CSP]
* [https://www.htbridge.com/websec Online Test of CSPd]{{깨진 링크|url=https://www.htbridge.com/websec }}
* [https://web.archive.org/web/20160610085705/https://oxdef.info/csp-tester/ CSP Tester (browser extension)]
* [http://www.gnudeveloper.com/cyber_security/secure_coding_guidelines_for_content_security_policy.html Secure Coding Guidelines for Content Security Policy]
* [https://report-uri.io CSP Violation Reporting]
* [https://embedthis.com/blog/posts/csp-survey/ CSP Deployment Survey] {{웨이백|url=https://embedthis.com/blog/posts/csp-survey/ |date=20160928182541 }}
* [https://cspvalidator.org/ CSP Validator]
* [https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP Content Security Policy (CSP)] on [[MDN 웹 문서]]

[[분류:웹 애플리케이션]]
[[분류:웹 취약점 공격]]
[[분류:컴퓨터 보안 표준]]