samesite 알아보기

hyun·2022년 11월 27일
0
post-thumbnail

왜 이번 포스팅을 쓰게 되었나

업무 중에 문의 전화를 받았다. IE에서는 잘 되나 다른 브라우저에서는 회사 모듈에서 에러가 계속 발생한다는 이슈였다. 소스도 보고 로그도 더 찍어보니 크롬 등 브라우저에서는 세션 값을 못 가져오고 있었다.

하지만 이것은 나의 일... 해결은 나의 몫!
열심히 구글링을 해보니 결제 모듈에서도 비슷한 문제가 나타난다는 글들이 있어 읽어보니 samesite 관련 문제라는 걸 알 수 있었다.


크롬 80 이후 버전부터 samesite 정책 기본값을 None에서 Lax로 변경함

2020년에 크롬은 CSRF에 대한 보안 강화를 위해 samesite 정책 기본값을 none에서 lax로 변경한다고 발표한 후 Edge와 Firefox 브라우저에서도 쿠키 정책 변경을 예고했다.

이에 대한 자세한 내용은 아래 링크 참고

chrome에서 제공하는 samesite 기본값 변경에 대한 가이드


그럼 samesite는 무엇인가

사이트의 도메인과 일치하는 쿠키를 First-party Cookie, 그렇지 않은 쿠키를 3rd-party cookie라고 한다. samesite 정책은 이 타사 쿠키에 대한 보안 문제를 해결하기 위해 만들어진 것이라 한다.

정책 종류는 None, Lax, Strict가 있다.


samesite 종류에 대한 설명

None : 3rd-party cookie 전송 가능

Lax : Http GET 메소드를 통해 사용자가 직접 주소를 입력하여 접속하는 경우에만 예외적으로 3rd-party cookie 전송을 허용

Strict : 항상 first-party cookie만 전송 가능


어떻게 해결해야 하나

처리하는 방법은 filter로 설정하거나 tomcat을 사용하는 경우에는 tomcat 설정 변경만으로 가능하다.

이 포스팅에서는 tomcat 설정 변경 방법에 대해 다룰 것이다. 먼저 수정 전 확인해야 할 전제조건은 아래와 같다.


전제조건

1. https 사용

http를 사용하면 설정해야 하는 secure 속성이 무시된다고 한다.
따라서 사이트에 구축할 때 https를 사용하도록 해야 한다.

2. tomcat 버전

tomcat 8.5.42버전 이상이어야 함


수정방법

1. samesite 설정을 none으로 바꾸기

{tomcat 설치 위치}/conf/server.xml 파일을 열어
context 태그 내 아래 태그를 추가한다

<CookieProcessor sameSiteCookies="none" />

2. 쿠키에 httpOnly, secure 속성 설정하기

{tomcat 설치 위치}/conf/web.xml 내
session-config 태그 내 아래 태그를 추가한다.

<cookie-config>
	<http-only>true</http-only>
	<secure>true</secure>
</cookie-config>




참고 사이트

https://web.dev/samesite-cookies-explained/
https://ttallaemideul.github.io/20200223/tomcat-001
https://seob.dev/posts/브라우저-쿠키와-SameSite-속성/
https://jjam89.tistory.com/231




gif 출처

https://media.giphy.com/media/hyyV7pnbE0FqLNBAzs/giphy.gif

profile
크리스마스 캐럴을 좋아하는 사람!

0개의 댓글