본문 바로가기
[개발] Programming

CSP (Content Security Policy) 설정 - 웹 취약점 막기

by eatyourKimchi 2021. 11. 28.

 

Content Security Policy

 

 CSP 설정은 웹 XSS (Cross-site_scripting) 공격을 막아주는 설정으로 브라우저는 보통 호출하면 모든 리소스를 로딩하게 되는데, CSP 설정을 응답 헤더에 적용하면 조건에 부합하는 리소스만 받게 된다. 지정된 리소스 외에는 모두 막기에 공격을 막는데 조금 보템이 될 것이다.

 

 

 

 

 

 CSP 설정은 아래와 같이 리소스의 종류를 선언하고 URL을 붙여서 선언하게 된다.

 

Content Type 설명
default-src Serves as a fallback for the other fetch directives
connect-src Restricts the URLs which can be loaded using script interfaces
font-src Specifies valid sources for fonts loaded using @font-face
img-src  Specifies valid sources of images and favicons
frame-src Specifies valid sources for nested browsing contexts loading using elements such as <frame> and <iframe>
script-src Specifies valid sources for JavaScript

 

* 더 많은 설정은 링크 참고 : 링크 이동

 

 

 

윈도우 IIS에 적용하는 방법

회사에서 윈도우 서버를 사용하므로 IIS 기준으로 설명하자면,

IIS 관리자 > HTTP 응답 헤더를 선택합니다.

(영어로는 HTTP Response Header)

 

윈도우 서버 IIS CSP 설정하는 방법

 

 

그다음에 추가를 클릭하여 새로운 정책을 추가합니다.

 

'이름'에는 Content-Security-Policy 를 입력하고,

'값'에는 정책을 추가해주면 됩니다.

 

 

 

예를 들면, 아래와 같이 입력하면 됩니다.

아래는 default-src self 설정으로 현재 포털의 리소스만 허용한다는 의미입니다.

 

참고로 HTML META 태그에도 CSP 설정을 추가할 수 있습니다.

 

 

 

CSP 정책은 ';'으로 여러 개를 지정할 수도 있습니다. 즉, 세미콜론으로 '값'에 여러 개의 정책을 추가하는 것이죠. 그러면 이미지에 대해서는 이런 정책을, 스크립트에 대해서는 다른 정책을 적용할 수 있겠죠?

 

우선 테스트로 빢시게 default self로 설정하고 페이지를 재호출 했습니다. 그랬더니 아래와 같이 대부분의 외부 링크들이 막힌 걸 확인할 수 있습니다. 내용을 자세히 보면, Content Security Policy에 의해 차단되었다고 찍혀 있네요.

 

 

 

좀 더 느슨하게 적용하기 위해 정책을 복수로 추가해 보겠습니다.

 

- 간단하게 설명하면, 디폴트 설정으로 image 그리고 dev 도메인에 포함된 소스는 모두 허용한다.

- 세미콜론을 추가하고, 스크립트의 경우 script-src를 지정하고 @@@ 도메인은 허용한다.

- 세미콜론을 추가하고, 폰트의 경우 media라는 도메인은 모두 허용.

- 이미지의 경우 img-src를 선언해 주고, https로 시작하는 건 모두 허용.

 

default-src 'self' https://@@@.image.com https://###.dev.co.kr; script-src 'self' https://@@@.com; font-src https://@@@.media.com; img-src https:;

 

 

위와 같이 어떤 src를 정의할 수 있는지는 아래 링크 참고하시면 됩니다.

 

링크 이동

 

웹보안 CSP

댓글