본문 바로가기
개발

Referer Policy 적용하기

by 방구쟁이 2022. 4. 29.
728x90

 혹시 프로젝트를 진행하면서 이미지 url을 통해 접근은 가능하나 개발중인 서비스앱 내부에서는 호출하지 못한 경험이 있는가? 필자는 다음 경험을 Referer policy를 정의하면서 접근할 수 있게 되었다. 

 브라우저에 직접적으로 접근은 가능하나 내가 개발중인 사이트 또는 특정 사이트에서만 접근하지 못한다면 image url이 저장된 cdn에 설정이 되어있는 것은 아닌지 의심해보며 이 포스팅을 읽고 적용해보자.

헤더에 담긴 리퍼러 정책

 

Referer란?

HTTP 요청을 하면 요청한 출처나 URL을 헤더에 담아 전달합니다. 이때 요청한 출처 또는 URL을 Referer 헤더라고 부릅니다.

referrer 데이터 접근 방법

 

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를 정하여 상황에 맞는 정책으로 불필요한 정보 누출을 막을 수 있다. 한번 사용해보자.

 

오늘도 감사합니다.

참고자료 : https://web.dev/i18n/ko/referrer-best-practices/

728x90

댓글