Jaeilit

콘텐츠 보안정책(CSP) 본문

TIL

콘텐츠 보안정책(CSP)

Jaeilit 2022. 6. 8. 10:45
728x90

Content Security Policy (CSP)

XSS (교차 사이트 스크립팅) 및  클릭재킹 데이터 삽입 공격을 비롯한 특정 유형의 공격을 감지하고 완화하는데 도움이 되는 추가 보안계층

 

CSP를 활성화 하려면 HTTP 헤더를 반환하도록 웹 서버를 구성해야함,

이전 버전에서는 헤더에 X-Content-Security-Policy 가 있었지만 이는 더이상 볼 수 없음,

 

HTTP 헤더 또는 meta 태그를 이용하여 정책을 구성 할 수 있음,

 

HTTP 헤더 사용

Content-Security-Policy: default-src https:

 

html <Head> 사이에 작성

<meta http-equiv="Content-Security-Policy"
      content="default-src 'self'; img-src https://*; child-src 'none';">

 

XSS 교차사이트 스크립팅이란??

 

자바스크립트에 악성 스크립트를 삽입하여 쿠키, 세션등 민감한 정보를 탈취하거나 비정상적인 기능을 수행하게 한다.

https://noirstar.tistory.com/266

 

XSS(Cross-Site Scripting) 이란?

2. XSS (Cross-Site Scripting)  2.1 개요 Ÿ   XSS Attack  XSS(Cross-Site Scripting) 이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하..

noirstar.tistory.com

 

CSP 의 주요목표는 XSS 공격을 완화하고 보고 하는 것,

 

XSS 는 악성 스크립트를 주입하는 방식으로 클라이언트가 허용 된 도메인에서 수신한 소스 파일에 로드 된 스크립트만 실행하게 하면 서버 관리자가 XSS가 발생할 수 있는 벡터를 줄이거나 제거 할 수 있다.

 

스크립트 소스를 제어하는 방법

 

지시문

  • child-src개발자는 중첩된 브라우징 컨텍스트와 작업자 실행 컨텍스트를 제어할 수 있습니다.
  • connect-src가져오기 요청, XHR, 이벤트 소스, 비콘 및 웹 소켓 연결에 대한 제어를 제공합니다.
  • font-src글꼴을 로드할 URL을 지정합니다.
  • img-src이미지를 로드할 수 있는 URL을 지정합니다.
  • manifest-src애플리케이션 매니페스트가 로드될 수 있는 URL을 지정합니다.
  • media-src비디오, 오디오 및 텍스트 트랙 리소스를 로드할 수 있는 URL을 지정합니다.
  • prefetch-src리소스를 미리 가져올 수 있는 URL을 지정합니다.
  • object-src플러그인을 로드할 수 있는 URL을 지정합니다.
  • script-src스크립트를 실행할 수 있는 위치를 지정합니다. 다른 스크립트와 같은 지시문에 대한 대체 지시문입니다.
    • script-src-elem스크립트 요청 및 블록 실행이 발생할 수 있는 위치를 제어합니다.
    • script-src-attr이벤트 핸들러의 실행을 제어합니다.
  • style-src스타일이 문서에 적용되는 위치를 제어합니다. 여기에는 HTTP 응답 헤더 필드 에서 시작된 <link>요소, 규칙 및 요청이 포함됩니다.@importLink
    • style-src-elem인라인 속성을 제외한 스타일을 제어합니다.
    • style-src-attr스타일 속성을 제어합니다.
  • default-src다른 fetch 지시문에 대한 대체 지시문입니다. 지정된 지시문에는 상속이 없지만 지정되지 않은 지시문은 의 값으로 대체됩니다 default-src.

문서 지시문

  • base-uri<base>요소가 사용할 수 있는 가능한 URL을 지정합니다 .
  • plugin-types문서에 로드할 수 있는 리소스 유형을 제한합니다( 예: application/pdf). <embed>영향 을 받는 요소에는 3가지 규칙이 적용됩니다 <object>.
    • 요소는 해당 유형을 명시적으로 선언해야 합니다.
    • 요소의 유형은 선언된 유형과 일치해야 합니다.
    • 요소의 리소스는 선언된 유형과 일치해야 합니다.
  • sandbox양식 제출과 같은 페이지의 작업을 제한합니다.
    • 요청 헤더와 함께 사용되는 경우에만 적용됩니다 Content-Security-Policy.
    • 지시문에 대한 값을 지정하지 않으면 모든 샌드박스 제한이 활성화됩니다.Content-Security-Policy: sandbox;
    • 샌드박스 구문

탐색 지시문

  • navigate-to문서가 어떤 수단으로든 탐색할 수 있는 URL을 제한합니다( 2021년 1월 최신 브라우저에서는 아직 지원되지 않음 ).
  • form-action양식이 제출할 수 있는 URL을 제한합니다.
  • frame-ancestors<frame>, <iframe>, <object>, <embed>또는 <applet>요소 내부에 요청된 리소스를 포함할 수 있는 URL을 제한합니다 .
    • 이 지시문이 <meta>태그에 지정되면 지시문이 무시됩니다.
    • 이 지시문은 지시문으로 대체되지 않습니다 default-src.
    • X-Frame-Options이 지시문에 의해 더 이상 사용되지 않으며 사용자 에이전트에서 무시됩니다.

옵션 (src)

  • * : 모든 것을 허용
  • 'none' : 모두 차단
  • 'self' : 현재 도메인만 허용
  • 'unsafe-inline' : 소스코드 내 인라인 자바스크립트 및 CSS 허용
  • 'unsafe-eval' : eval 같은 텍스트-자바스크립트 메커니즘 허용

예제)

Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
  • 이미지는 어디에서나 로드할 수 있습니다. => *;
  • 미디어는 media1.com 및 media2.com에서만 허용됩니다(해당 사이트의 하위 도메인에서는 허용되지 않음).
  • 실행 가능한 스크립트는 userscripts.example.com에서만 허용됩니다.

 

 

참고글

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Content_Security_Policy_Cheat_Sheet.md

 

GitHub - OWASP/CheatSheetSeries: The OWASP Cheat Sheet Series was created to provide a concise collection of high value informat

The OWASP Cheat Sheet Series was created to provide a concise collection of high value information on specific application security topics. - GitHub - OWASP/CheatSheetSeries: The OWASP Cheat Sheet ...

github.com

https://jdh5202.tistory.com/820

 

CSP(Content-Security-Policy)

CSP 개요 Mozilla가 개발한 표준으로 XSS, Data Injection, Click Jacking 등의 공격을 방지하기 위한 컨텐츠 기반 보안 정책 SOP(Same Origin Policy)와 비슷하지만 CSP는 웹 사이트 관리자가 규칙 적용 웹 서버..

jdh5202.tistory.com

 

728x90