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

모드 날파스
Maud Nalpas

시작하기 전에:

  • '사이트'와 '출처'의 차이점을 잘 모르겠다면 '동일 사이트'와 '동일 출처'의 이해를 확인하세요.
  • 사양에 원래 맞춤법 오류가 있어 Referer 헤더에 R이 누락되었습니다. 자바스크립트 및 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는 보다 세부적인 개인 정보 보호를 제공합니다. 이 정책을 사용하면 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를 사용하는 경우 (우선순위를 지정하지 않음) HTTPS가 아닌 요청에서 웹사이트 URL이 유출되지 않습니다. 네트워크의 모든 사용자가 HTTPS를 볼 수 있기 때문에 사용자가 중간자 공격에 노출될 수 있기 때문입니다.
  • 동일한 출처 내의 Referer 헤더 값은 전체 URL입니다.

예를 들어 https://site-one.example/stuff/detail?tag=red에서 https://site-one.example/...로 전송되는 동일 출처 요청입니다.

  • 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에서 질문을 트윗하세요.

모든 검토자, 특히 카우스투바 고빈드, 데이비드 반 클레브, 마이크 웨스트, 샘 더튼, 로완 메어우드, 잭, 케이스 바스크를 비롯한 모든 검토자들에게 기여하고 의견을 제공해 주셔서 대단히 감사합니다.

자료