lang/html

Referrer Policy, (방문)출처 정책

C/H 2018. 8. 8. 08:30

Referrer Policies

enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url" };

no-referrer

referer가 전송되지 않도록 지정. https://example.com/page.html에있는 문서가 "no-referrer"정책을 설정하면 https://example.com/ (또는 다른 URL) 로의 탐색은 Referer 헤더를 전송하지 않는다.

no-referrer-when-downgrade

TLS 보호환경 요청은 전체 URL을 보내고, TLS로 보호되지 않는 환경에서는 origin으로 보낸다.

반면 TLS로 보호 된 클라이언트에서 신뢰할 수없는 URL로 요청하면 참조 자 정보가 포함되지 않습니다. Referer HTTP 헤더는 전송되지 않습니다.

https://example.com/page.html 문서가 "no-referrer-when-downgrade"정책을 설정하고, https://not.example.com/으로 이동하면 Referer HTTP 헤더값은 https://example.com/page.html이며, 둘 다 자원의 출처가 잠재적으로 신뢰할 수없는 URL이 아닙니다.

같은 페이지에서 http://not.example.com/으로 이동하면 Referer 헤더가 전송되지 않습니다.
별도의 정책이 지정되지 않은 경우 사용자 에이전트의 기본 동작.

same-origin

전체 URL을 보낸다.

Cross-origin은 참조정보가 없다. referer 헤더는 전송되지 않는다.

https://example.com/page.html의 문서가 "same-origin"정책을 설정하면, https://example.com/not-page.html으로 이동하면 값이있는 Referer 헤더로 https://example.com/page.html가 전송된다.

동일한 페이지에서 https://not.example.com/으로 이동하면 Referer 헤더가 전송되지 않는다.

origin

same-origin, cross-origin 요청 모두 수행할때 ASCII직렬화 정보를 보낸다.

참고 : 원본 serialization은 https://example.com.
유효한 URL이 Referer 헤더에서 보내 지도록 사용자 에이전트에 U+002F SOLIDUS("/") 문자를 추가한다. (예 : https://example.com/)

참고 : "origin"정책은 암호화되지 않은 HTTP 요청의 일부로 네트워크를 통해 HTTPS 리퍼러의 원본을 보내도록합니다. "static-origin"정책은 이러한 우려를 해소합니다.

만약 https://example.com/page.html 문서가 "orgin"정책을 설정하면, 모든 출처로의 이동은 https://example.com/의 값을 가진 Referer 헤더를 보내고, 이는 잠재적으로 신뢰할만한 URL이 아니다.

strict-origin

"strict-origin"정책은 ASCII 직렬화정보를 전송한다.
  • TLS 보호된 환경설정에서 잠재적으로 신뢰할 수있는 URL과,
  • TLS 보호되지 않는 환경설정에서 모든 origin로
반면 TLS로 보호된 클라이언트에서 신뢰할수 없는 잠재적 URL에 대한 요청에는 참조자 정보가 포함되지 않는다. Referer HTTP 헤더는 전송되지 않는다. https://example.com/page.html 문서가 "strict-origin"정책을 설정하고, https://not.example.com으로 이동하면, Referer 헤더는 https://example.com/ 값이 전송된다.

동일한 페이지에서 http://not.example.com으로 이동하면 Referer 헤더가 전송되지 않는다.
http://example.com/page.html 문서가 "strict-origin"정책을 설정하고, http://not.example.com 또는 https://example.com으로 이동하면, Referer 헤더는 http://example.com/ 값이 전송된다.

origin-when-cross-origin

"origin-when-cross-origin"정책은 동same-origin요청시 전체 UR을 보내고, cross-origin 요청은 ASCII 직렬화만 전송한다.

참고 : "origin-when-cross-origin"정책의 경우 프로토콜 업그레이드 예는, http://example.com/에서 https://example.com/으로 이동할 때 cross-origin 요청이다.

참고 : "origin-cross-origin"정책은 암호화되지 않은 HTTP 요청의 일부로 네트워크를 통해 HTTPS referer 원본을 보내도록한다. "strict-origin-when-cross-origin"정책은 이러한 우려를 해소한다.

https://example.com/page.html의 문서가 "origin-cross-origin"의 정책을 설정하고, https://example.com/not-page.html으로 이동하면, https://example.com/page.html Referer 헤더가 전송된다.

같은 페이지에서 https://not.example.com/으로 이동하면 신뢰할수 없는 URL인 경우에도 Referer 헤더 https://example.com/ 값이 전송된다.

strict-origin-when-cross-origin

"strict-origin-when-cross-origin"정책은 same-origin요청시 전체 URL을 보내고, cross-origin 요청은 ASCII 직렬화만 전송한다.
  • TLS 보호된 환경설정에서 잠재적으로 신뢰할 수있는 URL과,
  • TLS 보호되지 않는 환경설정에서 모든 origin로
반면 TLS로 보호된 클라이언트에서 신뢰할수 없는 잠재적 URL에 대한 요청에는 참조자 정보가 포함되지 않는다. Referer HTTP 헤더는 전송되지 않는다. https://example.com/page.htm 문서가 "strict-origin-when-cross-origin"정책을 설정하고, https://example.com/not-page.html으로 이동하면, https://example.com/page.html referer 헤더가 전송된다.

동일 문서에서 https://not.example.com/으로 이동하면 https://example.com/ Referer 헤더가 전송된다.

동일 문서에서 http://not.example.com/으로 이동하면 Referer 헤더가 전송되지 않는다.

unsafe-url

"unsafe-url"정책은 cross-origin, same-origin 요청시 전체 URL을 referer 헤더로 보낸다. https://example.com/sekrit.html 문서가 "unsafe-url"정책을 설정하고, http://not.example.com/ (또는 모든 다른 origin)으로 이동하면, https://example.com/sekrit.html referer 헤더를 전송한다.

참고 : 정책의 이름이 거짓말하지 않는다. 이건 전혀 안전하지 않다. 이 정책은 TLS로 보호되는 리소스에서 불안전한 출처로가는 출발점과 경로를 누설한다. 잠재적으로 민감한 문서에 대한 정책을 설정할 때의 영향을 신중하게 고려하라.

Empty 공백

정책이없는 경우에 해당하며 다른곳에서 정의된 리퍼러 정책으로 대체하거나, 상위레벨 정책을 사용할수 없는경우 기본값은 "no-referrer-when-downgrade"이다.

Referrer Policy Delivery 리퍼러 정책 전달

다음 다섯가지중 하나가 전달된다.

  • Referrer-Policy HTTP 헤더를 통해서
  • referrer 이름을 가진 <meta> 요소를 통해서
  • <a>, <area>, <img>, <iframe>, <link> 요소에서 referrerpolicy 속성을 사용
  • <a>, <area>, <link> 요서에서 noreferrer 링크 관계를 통해서
  • 암묵적인 상속을 통해서


반응형