오늘의 TIL - Content-Security-Policy

Taesol Kwon·2020년 8월 1일
2
post-custom-banner

Content-Security-Policy

CSP는 웹 브라우저에서 사용하는 컨텐츠 기반의 보안 정책이다. 주로, XSS나 Data Injection, Click Jacking 등 웹 페이지에 악성 스크립트를 삽입하는 공격기법들을 막기 위해 사용된다. 어떻게 보면 Same Origin Policy와 비슷하지만 CSP의 경우 웹사이트가 직접 룰을 적용해서 사용하게 된다.

🔑 속성과 값

  • default-src : 모든 리소스에 대한 정책(아래 것들 다 포함)
  • script-src : Javascript 등 웹에서 실행 가능한 스크립트에 대한 정책
  • object-src : 플러그인, 오브젝트에 대한 정책
  • style-src : style, 즉 css에 대한 정책
  • img-src : 이미지
  • media-src : video, audio
  • frame-src : iframe, X-Frame 헤더랑은 비슷한 역할을 하지만 약간 다르다.
  • font-src : font
  • connect-src : script src로 불러올 수 있는 url에 대한 정책
  • form-action : form 태그 내 action 부분에 대한 정책
  • sandbox : HTML 샌드박스
  • script-nonce : 위에 script-src + 아래쪽에 none 이 포함되는 정책(좀 더 빡센 느낌)
  • plugin-types : 로드할 수 있는 플러그인 타입, 위에 object-src와 접점
  • reflected-xss : X-XSS-Protection header와 동일한 효과
  • report-uri : 정책 위반 케이스가 나타났을 때 내용을 전달할 URL

🔑 속성에 매핑도는 값

  • *: 모든 것을 허용
  • 'none': 아무것과도 일치하지 않는다.
  • 'self': 현재 출처와 일치하지만 하위 도메인은 일치하지 않는다.
  • 'unsafe-inline': 인라인 자바스크립트 및 CSS를 허용한다.
  • 'unsafe-eval': eval 같은 텍스트-자바스크립트 메커니즘을 허용한다.

<예시>

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">
  • default-src * : 모든 컨텐츠의 소스는 모든 사이트 허용
  • style-src 'self' 'unsafe-inline': stylesheet는 자기 도메인에서만 갖고오게 하고 인라인 css 허용
  • script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com : Javascript는 자기 도메인, 인라인 자바스크립트, 텍스트-자바스크립트 그리고 구글 도메인을 허용
profile
사진촬영을 좋아하는 프론트엔드 개발자입니다.
post-custom-banner

0개의 댓글