'Referrer-Policy'를 'same-origin'으로 설정

안녕하세요,

‘Referrer-Policy’ 헤더를 'same-origin’으로 설정하려고 합니다. 이는 nginx를 통해 설정할 수 없으며, Redis/Rails를 통해 설정됩니다.

기본값은 다음과 같습니다:
Referrer-Policy' => 'strict-origin-when-cross-origin'

이를 다음과 같이 변경할 수 있을까요?
Referrer-Policy' => 'same-origin'

컨테이너 안팎에서 해당 문자열을 찾을 수 없었습니다. :roll_eyes:

그래요. 멍청했네요. 제대로 된 곳에서 검색을 하지 않았어요.

Referrer-Policy' => 'strict-origin-when-cross-origin' 항목을 많이 찾았습니다.

다음은 목록입니다 (grep strict-origin-when-cross-origin /var/www/discourse/ -R):

  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/referrer_policy.rb: # referrer_policy:: The policy to use (default: ‘strict-origin-when-cross-origin’)
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-protection-2.2.2/lib/rack/protection/referrer_policy.rb: default_options :referrer_policy => ‘strict-origin-when-cross-origin’
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt:# “Referrer-Policy” => “strict-origin-when-cross-origin”
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/application/configuration.rb: “Referrer-Policy” => “strict-origin-when-cross-origin”
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/actionpack-7.0.3.1/lib/action_dispatch/railtie.rb: “Referrer-Policy” => “strict-origin-when-cross-origin”
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-protection-3.0.2/lib/rack/protection/referrer_policy.rb: # referrer_policy:: The policy to use (default: ‘strict-origin-when-cross-origin’)
  • /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-protection-3.0.2/lib/rack/protection/referrer_policy.rb: default_options referrer_policy: ‘strict-origin-when-cross-origin’
  • /var/www/discourse/config/initializers/new_framework_defaults_7_0.rb: “Referrer-Policy” => “strict-origin-when-cross-origin”
  • grep: /var/www/discourse/tmp/cache/bootsnap/compile-cache-iseq/f6/fc077900e2584e: binary file matches
  • grep: /var/www/discourse/tmp/cache/bootsnap/compile-cache-iseq/8a/029cf0d9c06e6d: binary file matches
  • grep: /var/www/discourse/tmp/cache/bootsnap/compile-cache-iseq/25/d90a345e4f734e: binary file matches

정말 same-origin을 어디에 설정해야 하는지 모르겠습니다. 힌트를 주실 수 있나요?

여기에 아주 지저분한 해킹 방법이 있지만

nginx에서 proxy_hide_header를 추가한 뒤, 나만의 add_header를 붙여 이 문제를 해결할 수 있습니다.

역시 좀 더러운 해킹이네요. 별로 마음에 안 들어요. :wink:

도움이 필요합니다. Herr, 프로덕션에서 사용하는 올바른 위치는 어디인가요?

조금 덜 난감한 해킹 방법은 커스텀 테마 컴포넌트의 HTML head 부분에 다음을 넣는 것입니다:

<meta name="referrer" content="same-origin">

이 방법은 HTTP 헤더를 제거하지는 않지만, HTTP 헤더가 HTML 메타 태그를 덮어쓰는지, 아니면 그 반대의 경우인지는 확실한 정보를 찾지 못했습니다. 하지만 whatsmyreferer.com으로 간단히 테스트해 본 결과, 잘 작동하는 것 같습니다: 나가는 링크에 더 이상 referrer 헤더가 전송되지 않습니다.