투케이2K

63. (Network/네트워크) 웹 브라우저 Cookie 쿠키 속성 SameSite 샘사이트 옵션 및 정책 변경 사항 정리 본문

Network

63. (Network/네트워크) 웹 브라우저 Cookie 쿠키 속성 SameSite 샘사이트 옵션 및 정책 변경 사항 정리

투케이2K 2024. 9. 24. 19:47

[구 분]

구분 : Network / 네트워크

제목 : 웹 브라우저 Cookie 쿠키 속성 SameSite 샘사이트 옵션 및 정책 변경 사항 정리

 

[설 명]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 환경 : Web Browser / HTTP

- 기술 : Cookie

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[사전) Cookie 간략 설명]
// --------------------------------------------------------------------------------------

1. HTTP 헤더 Cookie 는 http 통신에서 인증 , 정보 기록 및 전달에 사용되는 작은 기록 정보 파일입니다

2. HTTP 헤더 Cookie 는 key , value 형태로 구성됩니다

3. HTTP 헤더에 Cookie 에 여러 정보를 전달하는 경우 세미콜론 (;) 과 공백을 사용해 구분됩니다

4. document.cookie 형식 예시 : document.cookie='TSEESION=ABCD1234567890; domain=twok.com; path=/; SameSite=none; Secure;'

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[사전) Cookie 속성 종류 간략 설명]
// --------------------------------------------------------------------------------------

Cookie Properties 쿠키 속성 : 

  >> name , value : id 값을 지정 시 사용되는 값 입니다 (ex: JSESSIONID=A12ddfeDdf .. )

  >> domain : 쿠키가 전송 될 호스트를 명시합니다

  >> path : 쿠키 헤더를 전송하기 위해 요청되는 URL 경로 입니다

  >> expires : 발행 된 쿠키가 만료되는 일자 입니다

  >> created : 쿠키가 발행 된 일자 입니다

  >> size : 발행 된 쿠키의 크기 입니다

  >> httpOnly : http 전용 쿠키로 JavaScript 와 같은 클라이언트측 API 로 액세스할 수 없습니다

  >> Secure : HTTPS 프로토콜 상에서 암호화된 (encrypted ) 요청일 경우에만 쿠키를 전송 합니다 (SameSite 값이 none 일 때, 반드시 Secure 값은 true 필요)

  >> SameSite : 원본 도메인과 동일한 대상 도메인에만 쿠키를 전송합니다 (CSRF 공격 완화 방법)

  >> Priority : 쿠키 우선 순위를 설정합니다 (우선 순위가 높은 경우 쿠키를 더 오래 유지 가능)

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[Cookie SameSite 세부 옵션 정리]
// --------------------------------------------------------------------------------------

1. None : 

  - SameSite 가 탄생하기 전 쿠키와 동작하는 방식이 같습니다

  - None 으로 설정된 쿠키의 경우 크로스 사이트 요청의 경우에도 항상 전송됩니다

  - None 설정은 서드 파티에 쿠키를 전송 할 때 사용 할 수 있는 옵션 입니다
    (A 도메인에서 B 도메인이 사용할 특정 쿠키 None 설정 후 >> B 도메인 열기 수행 >> B 도메인에서 해당 전송 된 쿠키 사용)

  - None 설정 시 쿠키 설정 중 Secure 값도 포함 되어야합니다 (Secure 설정은 HTTPS 적용 시 전송 되는 쿠키 / 즉, SSL 설정이 필요)


2. Strict : 

  - 가장 보수적인 정책입니다

  - Strict 로 설정된 쿠키는 크로스 사이트 요청에는 항상 전송되지 않습니다


3. Lax : 

  - Strict 에 비해 상대적으로 느슨한 정책으로 서드 파티 쿠키는 전송되지 않지만, 몇 가지 예외적인 요청에는 전송됩니다

  - HTTP 요청 POST 나 DELETE 같은 요청의 경우 쿠키는 전송되지 않지만, GET 처럼 서버의 서버의 상태를 바꾸지 않을 거라고 기대되는 요청에는 Lax 쿠키가 전송 됩니다

  - window.location.replace 등으로 인해 자동으로 이뤄지는 이동 이나 302 리다이렉트를 이용한 이동에는 쿠키가 전송 되지만, <iframe>이나 <img>를 이용한 HTTP 요청에는 쿠키가 전송 되지 않습니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[SameSite 옵션 정책 변경 사항 정리]
// --------------------------------------------------------------------------------------

1. 2020년 2월 4일 크롬 80 버전이 배포되면서 SameSite의 기본값이 Lax로 변경 되었습니다.

  >> 원래 SameSite 를 명시하지 않은 쿠키는 SameSite 가 None으로 동작했지만 기본 값이 Lax 로 변경 되면서
       온라인 결제 및 OAuth 인증 시 크로스 사이트 간 페이지 전환에서 이슈가 발생 되었습니다

  >> IOS 14 출시 일자 2020년 09월 17일

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[쿠키 설명 사이트]

https://blog.naver.com/kkh0977/223218679371

--------------------------------------------------

[쿠키 속성 설명 사이트]

https://blog.naver.com/kkh0977/223258113988

--------------------------------------------------

[IOS 12 기기에서 SameSite None 설정에도 Strict 전송 관련 이슈 참고 사이트]
---------------------------
[Was 에서 SameSite None 설정 시 IOS 12 이하에서 strict 전송 되는 버그 (IOS 13 에서 수정 됨)]
---------------------------
[사파리 및 크롬은 WebKit 엔진을 같이 사용]

https://blog.naver.com/kkh0977/223249103418?trackingCode=blog_bloghome_searchlist

https://www.chromestatus.com/feature/5088147346030592

https://bugs.webkit.org/show_bug.cgi?id=198181

--------------------------------------------------

[IOS 쿠키 스트링 포맷 관련 소스 코드 사이트]

https://blog.naver.com/kkh0977/223296554346?trackingCode=blog_bloghome_searchlist

--------------------------------------------------

[IOS PG 사 연동 시 웹뷰 간 쿠키 및 세션 공유 방법 참고 사이트]

https://blog.naver.com/kkh0977/223252797879?trackingCode=blog_bloghome_searchlist

--------------------------------------------------

[IOS 18 베타 버전에서 애플리케이션이 SameSite=None 을 지정할 수 없는 WebKit 버그]

https://bugs.webkit.org/show_bug.cgi?id=279153

// --------------------------------------------------------------------------------------

 

반응형
Comments