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

Maud Nalpas
Maud Nalpas

시작하기 전에:

  • 'site'와 'origin'의 차이점을 모르면 'same-site'와 'same-origin'의 이해를 참조하세요.
  • 사양의 원래 철자 오류로 인해 Referer 헤더에 R이 누락되었습니다. JavaScript와 DOM의 Referrer-Policy 헤더와 referrer의 철자가 올바릅니다.

요약

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

변경사항과 그 이유는 무엇인가요?

HTTP 요청에는 요청이 이루어진 원본 또는 웹페이지 URL을 나타내는 Referer 헤더(선택사항)가 포함될 수 있습니다. Referer-Policy 헤더Referer 헤더에서 그리고 대상 document.referrer의 탐색 및 iframe에서 사용할 수 있는 데이터를 정의합니다.

사이트 요청 시 Referer 헤더로 전송되는 정확한 정보는 설정한 Referrer-Policy 헤더에 의해 결정됩니다.

다이어그램: 요청에서 전송된 리퍼러입니다.
리퍼러 정책 및 리퍼러.

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

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

최근까지는 no-referrer-when-downgrade가 여러 브라우저에서 광범위하게 기본 정책으로 사용되었습니다. 하지만 현재 많은 브라우저가 개인 정보 보호를 더욱 강화하는 기본값으로 전환하고 있습니다.

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

즉, 웹사이트에 설정된 정책이 없으면 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 사용: 리퍼러: https://site-one.example/stuff/detail?tag=red.
  • strict-origin-when-cross-origin 사용: 리퍼러: https://site-one.example/.

어떤 점이 그대로 유지되나요?

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

예를 들어 https://site-one.example/stuff/detail?tag=red에서 https://site-one.example/...으로 전송된 Same-origin 요청입니다.

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

어떤 영향을 미치나요?

다른 브라우저와의 논의 및 Chrome 84에서 실행된 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 헤더를 통해 또는 자바스크립트의 document.referrer에서 리퍼러를 사용하는지 확인하는 것입니다.

다른 출처에서 사이트로 전송되는 요청 리퍼러 (더 구체적으로는 경로 또는 쿼리 문자열)를 사용하고 이 출처에서 브라우저의 기본 리퍼러 정책을 사용하는 경우 (즉, 정책이 설정되지 않음) 사이트의 특정 기능이 손상되거나 다르게 작동할 수 있습니다.

이 조치가 사이트에 영향을 미치는 경우 대안 고려

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

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

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

사이트 전반에 명시적인 개인 정보 보호 정책을 구현합니다.

웹사이트에서 시작한 요청에 어떤 Referer를 전송해야 하나요? 즉, 사이트에 설정해야 하는 정책은 무엇인가요?

Chrome의 변화에도 불구하고 지금 당장은 strict-origin-when-cross-origin 또는 더 엄격한 명시적인 개인 정보 보호 강화 정책을 설정하는 것이 좋습니다.

이렇게 하면 사용자를 보호하고 여러 브라우저에서 웹사이트의 동작을 보다 예측 가능하게 만들 수 있습니다. 사이트가 브라우저 기본값에 의존하도록 하는 대신 대부분의 경우 제어 기능을 제공합니다.

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

Chrome Enterprise 정보

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

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

의견 보내기

공유하고 싶은 의견이나 신고할 의견이 있으신가요? Chrome의 배송 의도에 관한 의견을 공유하거나 @maudnals로 질문을 트윗하세요.

카우스투바 고빈드, 데이비드 반 클레브, 마이크 웨스트, 샘 더튼, 로완 메레우드, Jxck, 케이스 바스케스 등 모든 검토자의 기여와 의견에 감사드립니다.

리소스