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)
그다음에 추가를 클릭하여 새로운 정책을 추가합니다.
'이름'에는 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
'[개발] Programming' 카테고리의 다른 글
X-Frame-Options 설정으로 clickjacking 공격 예방하기 (0) | 2021.10.25 |
---|---|
SOAP API와 REST API의 차이점과 장단점 분석 (0) | 2020.05.20 |
sitemap (0) | 2018.10.25 |
댓글