서버 통신 헤더를 이용한 웹 보안 대응
본문 바로가기

Error Log

서버 통신 헤더를 이용한 웹 보안 대응

728x90
반응형
 

서버 통신 헤더를 이용한 웹 보안

이 글은 웹 개발 1년차 초짜 개발자가 쓴 글로써, 오류가 있을 수 있습니다.오류가 수정해야 할 부분이 있다면 댓글로 알려주세요!웹을 개발하다 보면 보안에 신경써야 할 부분들이 많습니다. 이

velog.io

 

서론

 

회사에 보안설정을 요구하는 문서가 날라왔습니다. 클라이언트에서는 헤더에 관련 설정을 해주어 보안에 신경쓸 수 있습니다.

 

 


 

 

 

 

Content-Security-Policy

 

 

브라우저에서 XSS와 관련된 공격을 막아주는 헤더입니다. 기본적으로 브라우저는 페이지에서 요청하는 모든 코드를 다운로드하여 실행합니다.

하지만 이 Content-Security를 설정함으로서 브라우저에게 특정 조건의 리소스만을 실행하라고 전달합니다.

여러가지 값이 전달될 수 있는데, default-src, script-src, child-src 등이 있습니다.

 

 

 

 

X-Frame-Option

 

 

이 헤더는 해당 페이지가 frame, iframe, object에서 렌더링을 할 수 있는지 여부를 나타냅니다. 이 헤더를 이용하면 사이트 내 콘텐츠가 다른 사이트에 포함되지 않도록 하여 clickjacking 공격으로부터 보호합니다.

 

  1. deny: 같은 사이트 내에서도 frame, iframe, object로 가지고 오는 것을 막습니다.
  2. sameorigin: 동일한 사이트에서만 허용합니다.
  3. alllow-from [URL]: 지정한 URL에서만 허용합니다.

 

 

 

 

X-Content-Type-Option

 

 

이 헤더는 리소스 다운시 해당 리소스의 MIMETYPE이 일치하지 않는 경우 차단할 수 있습니다. 값은 nosniff 입니다.

 

 

 

 

Strict-Transport-Security

 

 

이 헤더는 사이트에 https로 한번이라도 접속을 하는 경우 모든 요청을 https로 요청합니다. http도 자동으로 https로 변환합니다.

그리고 https로 전송한 요청을 중간에서 가로채 내용을 보는 MIMT를 클라이언트에서 차단할 수 있습니다.

Strict-Transport-Security: max-age=[expire-time]; includeSubDomains|preload 처럼 설정할 수 있습니다.

max-age는 이 사이트가 https로만 접근되어야 한다고 기억되어야 하는 시간을 지정합니다.

includeSubDomains는 이 사이트의 모든 서브 도메인에 규칙이 적용된다는 것을 의미합니다.

그리고 preload는 도메인이 안전하지 않은 연결을 하지 않습니다.

 

 

 

 

X-XSS-Protection

 

 

X-XSS-Protection 헤더는 공격자가 XSS 공격을 시도할 때 브라우저의 내장 XSS filter를 통해 공격을 방지하고자 하는 헤더입니다. 

X-XSS-Protection: 0 | 1; mode=block;

0일 경우 필터링을 비활성화하고, 1은 활성화합니다. 필터에 걸리는 요소들을 제거합니다.

mode=block일 경우, XSS 필터에 걸리는 요청이 오면 페이지 렌더링을 중단합니다.

 

 

 

 

Cache-Control

 

 

이 헤더는 캐싱을 정하는 헤더입니다. Cache-Control: no-store | no-cache | mush-revalidate | public | private; max-age=[number]

no-store은 아무것도 캐싱하지 않겠다는 의미입니다.

no-cache는 모든 캐시를 쓰기 전에 서버에게 캐시를 사용해도 되는지 물어보는 속성입니다.

 

  • must-revalidate: 만료된 캐시만 서버에 확인 받도록 하는 속성입니다.
  • public: 공유 캐시에 저장해도 된다는 의미를 가진 속성입니다.
  • private: 브라우저와 같은 특정 사용자 환경에만 저장하는 속성입니다.
  • max-age=[number]: 캐시 유효기간을 지정해주는 부분입니다.

 

 

 

 

Pragma

 

 

이 헤더는 요청과 응답에 영향을 줄 수 있는 캐시에 관련된 헤더입니다. 단 한개의 속성을 가지고 있습니다.

Pragma: no-cache;

캐시가 캐시 복사본을 릴리즈하기 전 서버로 요청을 보내 유효성 검사를 강제하는 속성입니다. 

 

 

 

 

 


 

반응형