보안 헤더
Content-Security-Policy
요약
설정된 URL의 Static Resource만 허용하게 하는 용도로 주로 XSS 공격 방지 목적으로 사용된다.
Content 종류
- script-src: JavaScript code.
- connect-src: XMLHttpRequest, WebSockets, and EventSource.
- font-src : fonts
- frame-src: frame urls
- img-src: Images
- media-src: audio & video
- object-src: Flash (and other plugins)
- style-src: CSS
예시
Content-Security-Policy: script-src ‘self’ https://apis.google.com
X-Frame-Options
요약
<frame>
, <iframe>
, <object>
태그를 렌더링할지 막을지 결정하는 것으로 ClickJacking과 같은 공격을 무력화하기 위해 주로 사용된다.
사용 방법
X-Frame-Options: DENY
(비 허용)X-Frame-Options: SAMEORIGIN
(동일 origin에서만 허용)X-Frame-Options: ALLOW FROM http://some-domain.com
(특정 origin에서만 허용)
X-Content-Type-Options
요약
리소스 다운 시 해당 리소스의 MIMETYPE이 일치하지 않을 경우 차단하는 헤더로 MIME-Sniffing 공격 차단을 위해 주로 사용된다.
사용 방법
X-Content-Type-Options: nosniff
Strict-Transport-Security
요약
HTTPS 통신으로 고정하여(이후 발생되는 HTTP 요청을 브라우저가 자동으로 HTPS로 요청) 중간자 공격을 차단하는 헤더이다.
사용 방법
Strict-Transport-Security: max-age=31536000;includeSubDomains;preload
HTTPS로 전송한 요청을 중간자가 가로채어 내용을 엿보는 공격 기법을 클라이언트 단에서 차단할 수 있다. 2014 블랙햇 아시아 컨퍼런스에서 발표된 서브도메인 우회 기법(sslStrip+
)은 includeSubDomains
를 추가하여 차단할 수 있다.
Public-Key-Pins
요약
인증서 PIN을 비교 후 연결하여 위조된 인증서를 통한 연결을 차단하는 헤더이다.
웹 서버의 Response Header에 인증서의 PIN 값을 브라우저에 전달하고, 전달된 PIN 값을 기반으로 암호화 통신에 사용할 인증서를 제한하여 잘못된 인증서를 사용한 암호화 통신이나, 중간자 공격을 막는다.
사용 방법
Public-Key-Pins: pin-sha256="<sha256>"; pin-sha256="<sha256>" max-age="15768000"; includeSubDomains
HTTP Public Key Pinning
특정 사이트 접속 시 암호화 통신을 할 인증서를 고정(Pinning)하는 것을 HPKP(HTTP Public Key Pinning)이라고 한다.
X-XSS-Protection
요약
브라우저의 내장 XXS Filter를 통해 공격을 차단하는 헤더이다.
사용 방법
X-XSS-Protection: 1;mode=block
위와 같이 설정할 경우 브라우저가 XSS 공격을 감지하여 자동으로 내용을 치환한다. mode-block
설정 유무에 다라 내용만 치환하고 본문을 출력하거나, 페이지 로드 자체를 차단할 수 있다.