해결 - Chrome의 Rails에 대한 SameSite 문제

SameSite란 무엇입니까?

SameSite 속성은 브라우저에 자사 또는 타사 응용 프로그램과 함께 쿠키를 사용하는 시기와 방법을 알려줍니다. SameSite는 대부분의 브라우저에서 쿠키 액세스 허용 여부를 식별하는 데 사용됩니다.

SameSite 속성 값은 다음과 같습니다.

  • Lax - 자사 쿠키만 액세스할 수 있습니다.

  • Strict - 자사 쿠키만 활성화하고 외부 사이트의 쿠키 액세스 요청도 허용하지 않습니다.

  • 없음 - 제3자/외부 사이트에서 쿠키에 액세스할 수 있습니다.

  • Chrome에서 업데이트:

    이전에는 SameSite 속성이 설정되지 않은 경우 기본적으로 '없음'으로 설정되어 제3자가 쿠키에 액세스할 수 있습니다. 이제 SameSite 속성이 설정되지 않은 경우 Chrome은 기본적으로 첫 번째 당사자만 쿠키에 액세스할 수 있도록 허용하는 'lax'로 설정됩니다.

    따라서 제3자가 애플리케이션 쿠키에 액세스해야 하는 경우 SameSite를 '없음'으로 명시적으로 지정해야 합니다. 이 경우 보안도 지정해야 합니다. 명시적으로 'SameSite: None; Secure', 쿠키는 제3자에게 공유됩니다.

    Rails에서 이 문제를 어떻게 해결합니까?

    Rails에서 이 문제를 해결하려면 SameSite=None 및 Secure로 쿠키를 명시적으로 설정해야 합니다. SameSite 및 Secure를 설정하려면 session_store.rb를 수정해야 합니다.

    config/initializers/session_store.rb
    
    Rails.application.config.session_store :cookie_store, {
      :key => '_application_session',
      :domain => :all,
      :same_site => :none,
      :secure => :true,
      :tld_length => 2
    }
    

    유일한 캐치는 Secure 속성을 지정했기 때문에 쿠키가 보안 연결(HTTPS)로만 공유된다는 것입니다. 개발 환경에서 이것을 테스트하려면 ngrok 을 사용하십시오.

    그게 다야! 귀하의 애플리케이션은 Chrome에서 완벽하게 작동합니다. 건배!

    좋은 웹페이지 즐겨찾기