Chrome의 새로운 기본 리퍼러 정책 - strict-origin-when-cross-origin

시작하기 전에:

  • '사이트'와 '출처'의 차이점을 잘 모르는 경우 '동일 사이트' 및 '동일 출처' 이해하기를 확인하세요.
  • 사양의 원래 오타로 인해 Referer 헤더에 R이 누락되었습니다. Referrer-Policy 헤더와 JavaScript 및 DOM의 referrer는 올바르게 철자가 지정됩니다.

요약

  • 브라우저는 웹사이트에 설정된 정책이 없는 경우 적절한 대체 수단을 제공하기 위해 개인 정보 보호를 강화하는 기본 리퍼러 정책으로 발전하고 있습니다.
  • Chrome은 85에서 strict-origin-when-cross-origin을 기본 정책으로 점진적으로 사용 설정할 계획입니다. 이로 인해 다른 출처의 리퍼러 값을 사용하는 사용 사례에 영향을 미칠 수 있습니다.
  • 이것이 새로운 기본값이지만 웹사이트는 여전히 원하는 정책을 선택할 수 있습니다.
  • Chrome에서 변경사항을 사용해 보려면 chrome://flags/#reduced-referrer-granularity에서 플래그를 사용 설정하세요. 이 데모를 확인하여 변경사항을 실제로 확인할 수도 있습니다.
  • 리퍼러 정책 외에도 브라우저가 리퍼러를 처리하는 방식이 변경될 수 있으므로 계속 주시하세요.

무엇이 변경되고 그 이유는 무엇인가요?

HTTP 요청에는 요청이 이루어진 출처 또는 웹페이지 URL을 나타내는 선택적 Referer 헤더가 포함될 수 있습니다. The Referer-Policy header defines what data is made available in the Referer header, and for navigation and iframes in the destination's document.referrer.

사이트의 요청에서 Referer 헤더에 전송되는 정보는 설정한 Referrer-Policy 헤더에 따라 결정됩니다.

다이어그램: 요청에서 전송된 리퍼러
Referrer-Policy 및 Referer.

정책이 설정되지 않은 경우 브라우저의 기본값이 사용됩니다. 웹사이트는 종종 브라우저의 기본값을 따릅니다.

탐색 및 iframe의 경우 Referer 헤더에 있는 데이터는 document.referrer를 사용하여 JavaScript를 통해 액세스할 수도 있습니다.

최근까지 no-referrer-when-downgrade 는 브라우저 전반에서 널리 사용되는 기본 정책이었습니다. 하지만 이제 많은 브라우저가 개인 정보 보호를 강화하는 기본값으로 전환하는 단계에 있습니다.

Chrome은 기본 정책을 no-referrer-when-downgrade에서 strict-origin-when-cross-origin으로 전환할 계획입니다. 85버전부터 시작합니다.

즉, 웹사이트에 설정된 정책이 없으면 Chrome은 기본적으로 strict-origin-when-cross-origin을 사용합니다. 원하는 정책을 계속 설정할 수 있습니다. 이 변경사항은 설정된 정책이 없는 웹사이트에만 영향을 미칩니다.

이번 변경으로 무엇이 달라지나요?

strict-origin-when-cross-origin은 더 많은 개인 정보 보호 를 제공합니다. 이 정책을 사용하면 출처Referer 헤더의 교차 출처 요청에 전송됩니다.

이렇게 하면 경로 및 쿼리 문자열과 같은 전체 URL의 다른 부분에서 액세스할 수 있는 비공개 데이터가 유출되지 않습니다.

다이어그램: 교차 출처 요청에 대해 정책에 따라 전송되는 리퍼러
정책에 따라 교차 출처 요청에 대해 전송된 리퍼러 (및 document.referrer)

예를 들면 다음과 같습니다.

https://site-one.example/stuff/detail?tag=red 에서 https://site-two.example/…으로 전송된 교차 출처 요청:

  • no-referrer-when-downgrade 사용: Referer: https://site-one.example/stuff/detail?tag=red
  • strict-origin-when-cross-origin 사용: Referer: https://site-one.example/

변경되지 않는 부분

  • no-referrer-when-downgrade와 마찬가지로 strict-origin-when-cross-origin보안입니다. HTTPS 출처(보안)에서 HTTP 출처 (보안되지 않음)로 요청이 이루어지면 리퍼러 (Referer 헤더 및 document.referrer)가 없습니다. 이렇게 하면 웹사이트에서 HTTPS를 사용하는 경우 (HTTPS를 사용하지 않는 경우 우선순위를 지정) 웹사이트의 URL이 비 HTTPS 요청에서 유출되지 않습니다. 네트워크의 모든 사용자가 이러한 URL을 볼 수 있으므로 사용자가 중간자 공격에 노출될 수 있기 때문입니다.
  • 동일한 출처 내에서 Referer 헤더 값은 전체 URL입니다.

예를 들면 다음과 같습니다. 동일 출처 요청, https://site-one.example/stuff/detail?tag=red 에서 https://site-one.example/…으로 전송됨:

  • strict-origin-when-cross-origin 사용: Referer: https://site-one.example/stuff/detail?tag=red

영향은 무엇인가요?

다른 브라우저와의 논의 및 Chrome 자체 실험을 바탕으로 사용자에게 표시되는 손상은 제한적일 것으로 예상됩니다.

전체 리퍼러 URL을 사용할 수 있는 서버 측 로깅 또는 분석은 해당 정보의 세분성 감소로 인해 영향을 받을 수 있습니다.

취해야 할 조치는 무엇인가요?

Chrome은 85에서 새로운 기본 리퍼러 정책을 출시할 계획입니다 (베타의 경우 2020년 7월, 안정화 버전의 경우 2020년 8월). Chrome 상태 항목에서 상태를 확인하세요.

변경사항 이해 및 감지

새로운 기본 변경사항을 실제로 이해하려면 이 데모를 확인하세요.

이 데모를 사용하여 실행 중인 Chrome 인스턴스에 적용되는 정책을 감지할 수도 있습니다.

변경사항 테스트 및 사이트에 영향을 미치는지 확인

Chrome 81부터 변경사항을 사용해 볼 수 있습니다. Chrome에서 chrome://flags/#reduced-referrer-granularity 를 방문하고 플래그를 사용 설정하세요. 이 플래그가 사용 설정되면 정책이 없는 모든 웹사이트에서 새로운 strict-origin-when-cross-origin 기본값이 사용됩니다.

Chrome 스크린샷: chrome://flags/#reduced-referrer-granularity 플래그를 사용 설정하는 방법
플래그 사용 설정

이제 웹사이트와 백엔드가 어떻게 동작하는지 확인할 수 있습니다.

영향을 감지하기 위해 해야 할 또 다른 작업은 웹사이트의 코드베이스가 서버의 수신 요청의 Referer 헤더를 통해 또는 JavaScript의 document.referrer에서 리퍼러를 사용하는지 확인하는 것입니다.

사이트의 다른 출처 에서 사이트로의 요청의 리퍼러 (특히 경로 또는 쿼리 문자열)를 사용하고 이 출처에서 브라우저의 기본 리퍼러 정책을 사용하는 경우 (즉, 설정된 정책이 없음) 사이트의 특정 기능이 중단되거나 다르게 동작할 수 있습니다.

사이트에 영향을 미치는 경우 대체 수단 고려

리퍼러를 사용하여 사이트 요청의 전체 경로 또는 쿼리 문자열에 액세스하는 경우 다음과 같은 몇 가지 옵션이 있습니다.

  • CSRF 보호, 로깅 및 기타 사용 사례에 OriginSec-fetch-Site와 같은 대체 기술 및 헤더를 사용합니다. 리퍼러 및 리퍼러 정책: 권장사항을 확인하세요.
  • 사용자에게 투명하고 필요한 경우 특정 정책에 대해 파트너와 협력할 수 있습니다. 액세스 제어(웹사이트에서 리퍼러를 사용하여 다른 출처에 리소스에 대한 특정 액세스 권한을 부여하는 경우)는 Chrome의 변경사항이 있더라도 출처가 여전히 Referer 헤더(document.referrer에 있음)에서 공유되지만 이러한 사례일 수 있습니다.

대부분의 브라우저는 리퍼러와 관련하여 비슷한 방향으로 이동하고 있습니다 (리퍼러 및 리퍼러 정책: 권장사항에서 브라우저 기본값 및 발전 과정 참고).

사이트 전반에 개인 정보 보호를 강화하는 명시적 정책 구현

웹사이트에서 시작된 요청에 어떤 Referer를 전송해야 하나요? 즉, 사이트에 어떤 정책을 설정해야 하나요?

Chrome의 변경사항을 염두에 두더라도 지금 바로 strict-origin-when-cross-origin 또는 더 엄격한 개인 정보 보호를 강화하는 명시적 정책 을 설정하는 것이 좋습니다.

이렇게 하면 사용자를 보호하고 웹사이트가 브라우저 전반에서 더 예측 가능하게 동작합니다. 대부분 사이트가 브라우저 기본값에 의존하는 대신 제어할 수 있습니다.

정책 설정에 관한 자세한 내용은 리퍼러 및 리퍼러 정책: 권장사항 을 참고하세요.

Chrome Enterprise 정보

Chrome Enterprise 정책 ForceLegacyDefaultReferrerPolicy 은 엔터프라이즈 환경에서 이전 기본 리퍼러 정책인 no-referrer-when-downgrade를 강제 적용하려는 IT 관리자가 사용할 수 있습니다. 이를 통해 기업은 애플리케이션을 테스트하고 업데이트하는 데 추가 시간을 확보할 수 있습니다.

이 정책은 Chrome 88에서 삭제됩니다.

의견 보내기

공유할 의견이나 신고할 사항이 있나요? Chrome의 출시 의도에 관한 의견을 공유하거나 질문을 @maudnals에 트윗하세요.

모든 검토자, 특히 Kaustubha Govind, David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck, Kayce Basques의 기여와 의견에 진심으로 감사드립니다.

리소스