Notice
Recent Posts
Recent Comments
Link
투케이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
// --------------------------------------------------------------------------------------
반응형
'Network' 카테고리의 다른 글
Comments