혹시 프로젝트를 진행하면서 이미지 url을 통해 접근은 가능하나 개발중인 서비스앱 내부에서는 호출하지 못한 경험이 있는가? 필자는 다음 경험을 Referer policy를 정의하면서 접근할 수 있게 되었다.
브라우저에 직접적으로 접근은 가능하나 내가 개발중인 사이트 또는 특정 사이트에서만 접근하지 못한다면 image url이 저장된 cdn에 설정이 되어있는 것은 아닌지 의심해보며 이 포스팅을 읽고 적용해보자.
Referer란?
HTTP 요청을 하면 요청한 출처나 URL을 헤더에 담아 전달합니다. 이때 요청한 출처 또는 URL을 Referer 헤더라고 부릅니다.
Referer를 통해 접근한 출처를 알 수 있는 유익한 정보이나 자칫 잘못하면 치명적인 정보 노출이 될 수 있다. 다음 예를 살펴보자.
- 기본적인 정보 누출 : https://kku-jun.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts#
- 치명적 정보 누출 : https://kku-jun.tistory.com/manage/newpost/?email=kku@naver.com&sessionId=23KSQ12317Qs
위의 referer처럼 HTTP 요청을 할때 민감한 정보들을 노출시킬 위험이 있다.
Referer Policy란?
해당 위험요소를 막기 위해 Referer 정책이 존재한다. 아래와 같이 refere 정책을 정의하면 출처의 노출 정도를 설정할 수 있다. 그 중 사용하기 적절한 정책은 다음 두가지이며, strict-origin-when-cross-origin이 좀 더 유연하다.
// referer를 남기지 않는 정책
<meta name="referrer" content="no-referrer" />
// 호출하고자 하는 주소가 https이며 origin이 같은 경우 Full url,
// https 이며 origin이 다른 경우 도메인,
// http 이면 referer를 남기지 않는 정책
<meta name="referrer" content="strict-origin-when-cross-origin" />
Referer policy를 설정하지 않으면 기본적으로 브라우저 버전별로 default 정책이 정해져 있다.
그 밖에 Referer policy
- <meta name="referrer" content="no-referrer" /> : 전달하지 않음
- <meta name="referrer" content="origin" /> : 도메인 정보만 전달
- <meta name="referrer" content="unsafe-url" /> : 모든 주소를 전달
- <meta name="referrer" content="strict-origin" /> : HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 도메인 전달
- </meta name="referrer" content="no-referrer-when-downgrade" >: HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 Full URL 전달
- </meta name="referrer" content="origin-when-cross-origin" > : origin이 같은 경우 Full URL, 다른경우 도메인만 전달
- </meta name="referrer" content="same-origin" > : origin이 같은 경우에만 Full URL 전달
- </meta name="referrer" content="strict-origin-when-cross-origin" > : 도메인이 다르고 + HTTP에서 HTTP로 갈때 or HTTPS에서 HTTPS로 갈때 도메인 전달, 같은 도메인일 경우 Full URL 전달
Referer policy를 정하여 상황에 맞는 정책으로 불필요한 정보 누출을 막을 수 있다. 한번 사용해보자.
오늘도 감사합니다.
'개발' 카테고리의 다른 글
Grafana K6를 이용하여 부하 테스트 해보기 (0) | 2024.10.27 |
---|---|
객체 지향 5원칙을 준수하여 리팩토링 하기 (with. Kafka Consumer) (3) | 2024.03.16 |
메모리 누수 분석 및 개선 경험 (0) | 2023.04.10 |
웹 렌더링 과정 (0) | 2021.09.13 |
SPA(Single Page Application)란? (0) | 2021.07.13 |
댓글