콘텐츠 보안 정책

위키백과, 우리 모두의 백과사전.
둘러보기로 가기 검색하러 가기

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

현황[편집]

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

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

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

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

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

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

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

각주[편집]

  1. Sid Stamm (2009년 3월 11일). “Security/CSP/Spec - MozillaWiki”. 《wiki.mozilla.org》. 2011년 6월 29일에 확인함. 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. 
  2. “State of the draft”. 2016년 9월 13일. 2016년 10월 5일에 확인함. 
  3. “Can I use Content Security Policy?”. Fyrd. 2013년 2월 22일에 확인함. 
  4. Robert Hansen (2009년 6월 1일). “Mozilla's Content Security Policy”. 2015년 3월 18일에 원본 문서에서 보존된 문서. 2011년 6월 29일에 확인함. 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. 
  5. “Content Security Policy 1.0”. W3C. 2015년 11월 13일에 확인함. 
  6. “Content Security Policy Level 3”. W3C. 2015년 11월 13일에 확인함. 
  7. “Chrome 25 Beta: Content Security Policy and Shadow DOM”. Google. 2013년 1월 14일. 2013년 2월 22일에 확인함. 
  8. “Content Security Policy 1.0 lands in Firefox Aurora”. Mozilla Foundation. 2013년 5월 29일. 2013년 6월 16일에 확인함. 
  9. “RapidRelease/Calendar”. Mozilla Foundation. 2013년 5월 29일. 2013년 6월 16일에 확인함. 
  10. “Bug 96765 - Implement the "Content-Security-Policy" header”. WebKit. 2012년 10월 31일. 2015년 8월 7일에 확인함. 
  11. “New Chromium security features, June 2011”. Google. 2011년 6월 14일. 2013년 2월 22일에 확인함. 
  12. “Introducing Content Security Policy”. Mozilla Foundation. 2013년 2월 22일에 확인함. 
  13. “HTML META element”. 《Content Security Policy Level 2》. W3C. 2015년 11월 14일에 확인함. 
  14. “Defense in Depth: Locking Down Mash-Ups with HTML5 Sandbox”. Windows Internet Explorer Engineering Team. 2014년 4월 13일에 확인함. 
  15. “ngCsp directive”. AngularJS. 
  16. “django-security”. 
  17. “Content security policy”. GitHub. 

외부 링크[편집]