목표 : HTTP 보안 헤더 예시 및 방식 알아보기
HTTPS는 암호화 통신을 지원하여 데이터를 평문으로 전송하는 HTTP의 단점을 보완한다.
HSTS는 웹으로 접속할 때, 서버로 전송되는 요청을 HTTPS로 접근하도록 강제하는 헤더이다.
이를 통해 SSL Strip 공격을 방어할 수 있다.
| *Max-age= | HTTPS를 통해서만 사이트에 접근할 수 있음을 브라우저가 기억해야하는 시간 |
|---|---|
| includeSubDomains | HSTS가 적용될 subdomain |
| preload | 브라우저가 해당 사이트를 HSTS를 적용하고 preload list에 추가 |
Strict-Transport-Security: max-age=31536000; includeSubDomains
// 모든 subdomain은 1년의 max-age동안 HTTPS가 됨
XSS공격을 감지하고, 페이지 로드를 중지한다.
XSS 공격 중, Reflected XSS 공격은 악의적인 사용자가 악성 스크리브를 포함한 링크를 사용자에게 전달하고, 이를 통해 정보를 탈취하거나 웹 사이트가 비정상적인 동작을 하도록 한다.
이를 예방하기 위해 <, >, “ 등의 특수 문자 필터링을 통해 방지한다.
| 0; | XSS 필터링 비활성화 |
|---|---|
| 1; | XSS 필터링 사용, 스크립팅 XSS 공격이 감지되면 안전하지 않은 영역 제거 후 렌더링 |
| 1; mode = block | XSS 필터링 사용, 영역 제거 대신 렌더링 중단 |
| 1; report = | XSS 필터링 사용, 페이지 렌더링 차단 후 위반 사항 보고 |
X-XSS-Protection: 1; mode=block
X-XSS-Protection 기능을 포함한 웹 보안 정책을 가진다.
XSS와 Data injection, Click Jacking등 을 예방하며, 태그 및 Contents의 출처를 제한하거나 허용하여 허용된 소스만 실행하거나 로드될 수 있도록 보호한다.
| default-src | 리소스 유형에 대한 폴백, 인라인 스크립트 실행 방지, eval() 사용 차단, 인라인 스타일이 |
|---|---|
| script-src | 인라인 스크립트 실행 방지, eval() 사용 차단 |
| style-src | 인라인 스타일이 |
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src https://*; child-src 'none';" />
해당 페이지를 <frame> 또는, <iframe>, <object> 에서 렌더링할 수 있는 여부를 나타나는 데에 사용된다.
사이트 내 iframe을 비활성화 하게 만들어, 다른 사람들은 해당 사용자의 콘텐츠를 삽입하지 못하게 한다.
| deny | 모든 사이트에서 비활성화 |
|---|---|
| sameorigin | 동일한 사이트의 frame에서만 보여짐 |
| allow-from uri | 지정된 특정 uri의 frame에서만 보여짐 |
Header always set X-Frame-Options "sameorigin"
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/
https://www.igloo.co.kr/security-information/secure-header를-이용한-브라우저-보안/