한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
개발자를 위한 새로운 SameSite=None; 보안 쿠키 설정에 대비하기
2020년 1월 14일 화요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 블로그 번역 리뷰는 조은(Web GDE)님이 참여해 주셨습니다>
게시자: Barb Palser, Google
Chrome and Web Platform Partnerships
지난 5월, Chrome은 새로운 쿠키 분류 시스템(
스펙
)에서 사용할 수 있는 쿠키에 대한 안전 기본 모델(secure-by-default)을
발표
했습니다. 이 이니셔티브는 웹에서 개인정보 보호 및 보안을 개선하기 위한
우리의 노력
중 하나입니다.
Chrome은 2020년 2월에 릴리즈되는 Chrome 80 버전에 새 모델을 구현할 예정입니다. Mozilla와 Microsoft도 각자의 일정에 맞추어 Firefox와 Edge에 새 모델을 구현하겠다고 밝혔습니다. 아직 Chrome의 모델 변화까지 몇 달 남아있지만, 쿠키를 관리하는 개발자는 현재 준비 태세를 평가해보아야 합니다. 이 블로그 게시물에서는 높은 수준의 개념을 설명하며, 개발자 가이드는 web.dev의
SameSite Cookies Explained
를 참고하세요.
Cross-site, same-site 쿠키 컨텍스트 이해하기
웹사이트에서는 일반적으로 광고, 콘텐츠 추천, 서드 파티 위젯, 소셜 임베드 및 다른 기능을 위한 외부 서비스를 통합합니다. 웹을 탐색할 때 이러한 외부 서비스가 브라우저에 쿠키를 저장한 후 개인화된 환경을 제공하거나 고객 참여도를 측정하기 위해 해당 쿠키에 접근할 수 있습니다. 모든 쿠키에는 쿠키와 연결된 도메인이 있습니다. 쿠키와 연결된 도메인이 사용자 주소 표시줄에 표시된 웹 사이트가 아닌 외부 서비스와 일치하는 경우, 이 도메인은 cross-site(또는 “third party”) 컨텍스트로 다루어집니다.
덜 명확한 cross-site 사용 사례 중 하나로 여러 웹사이트를 소유한 엔티티가 같은 속성에 걸쳐 쿠키를 사용하는 상황이 있습니다. 비록 같은 엔티티가 쿠키와 웹사이트를 소유하고 있지만 쿠키의 도메인이 쿠키가 접근하는 사이트(들)와 일치하지 않을 때는 여전히 cross-site 또는 “third party" 컨텍스트로 다루어집니다.
웹 페이지 상의 외부 리소스가 사이트 도메인과 일치하지 않는 쿠키에 접근할 때, 이를 cross-site 또는 “third party" 컨텍스트라고 합니다.
반대로 same-site (또는 “first party") 컨텍스트에서 쿠키 접근은 쿠키의 도메인이 사용자 주소 표시줄에 표시된 웹사이트 도메인과 일치할 때 발생합니다. same-site 쿠키는 개별 웹사이트에 로그인한 사용자의 로그인 상태를 유지하고, 사용자의 기본 설정을 기억하거나 사이트 분석을 지원하는 데 널리 사용됩니다.
웹 페이지 상의 리소스가 유저가 접속한 사이트와 일치하는 쿠키에 접근한 경우, 이를 same-site 또는 “first-party” 컨텍스트라고 합니다.
쿠키 보안과 투명성을 위한 새로운 모델
현재, same-site 컨텍스트에서만 쿠키에 접근 가능하게 하기 위해, 개발자는 두가지 설정 중 (SameSite=Lax 또는 SameSite=Strict) 하나를 적용할 수 있습니다. 하지만 극소수의 개발자만 이 권장 사항을 따르므로 대부분의 same-site 쿠키가
cross-site 요청 위조 (CSRF)
공격 같은 위협에 불필요하게 노출됩니다.
더 많은 웹사이트와 유저들을 보호하기 위해 새로운 안전 기본 모델(secure-by-default)에서는 별도로 명시하지 않는 한 모든 쿠키를 외부 접근으로부터 보호하는 것으로 가정합니다. 개발자는 새로운 쿠키 설정인 SameSite=None 을 사용하여 cross-site 접근을 위한 쿠키를 설정해야합니다. SameSite=None 속성이 존재할 때 HTTPS 연결에서만 cross-site 쿠키를 사용하도록 추가로 Secure 속성을 사용해야합니다. 이를 통해 cross-site 접근과 관련한 위험이 완화되지는 않지만 네트워크 공격에 대한 보호 기능은 제공됩니다.
당장 눈에 보이는 보안 이점을 넘어서 cross-site 쿠키를 명시적으로 선언하면 더 나은 투명성과 유저 선택을 지원할 수 있습니다. 예를 들어 브라우저는 유저에게 여러 사이트 사이에 접근하는 쿠키와는 별개로 단일 사이트에서만 접근하는 쿠키를 관리하는 디테일한 제어 기능을 제공할 수 있습니다.
2020년 2월부터 Chrome에 적용됩니다.
Chrome에서는 2월 공개될 예정인 Chrome 80부터 SameSite 값을 선언하지 않은 쿠키를 SameSite=Lax 쿠키로 취급합니다. 보안 접속을 제공하는 경우에 SameSite=None; Secure 설정을 가진 쿠키에 접근하는 경우에만 외부 접근이 가능합니다. SameSite=None 및 Secure 에 대한 Chrome Platform Status 트래커는 최신 출시 정보에 맞추어 계속 업데이트될 것입니다.
Mozilla는 Firefox에서 cross-site 쿠키에 대한 SameSite=None; Secure
요구사항의 구현
과 새로운 쿠키 분류 모델을 지원하겠다는 의사를 밝혔습니다. Microsoft는 최근 Microsoft Edge 80에 우선 실험적으로 이 모델을 구현하기 시작하겠다는 계획을
발표
했습니다.
어떻게 준비해야하나요 - 이미 알려진 복잡한 작업들
Cross-site 쿠키를 관리하는 경우 SameSite=None; Secure 설정을 이러한 쿠키에 적용해야 합니다.
대부분의 개발자들에게는 구현이 간단하겠지만, 아래와 같은 복잡하고 특별한 케이스를 찾아내기 위해 지금 당장 테스트를 시작하는 걸 강력히 권장합니다
아직 None 값을 지원하지 않는 언어와 라이브러리가 있으므로, 쿠키 헤더에 개발자가 직접 None 값을 설정해야합니다. 이
Github 저장소
에서는 다양한 언어, 라이브러리, 프레임워크에서
SameSite=None
; Secure 구현을 위한 안내를 제공합니다.
일부 버전의 Chrome, Safari, UC Browser를 포함한 일부 브라우저에서는 None 값을 의도하지 않은 방식으로 처리할 수 있으므로 개발자가 이런 클라이언트를 위한 예외 케이스를 만들어야할 수 있습니다. 이전 버전의 Chrome을 사용하는 Android WebView가 이 케이스에 포함됩니다. 알려진
호환 불가능 클라이언트
목록을 확인해 보세요.
추후에 Android WebView에 새로운 쿠키 모델이 적용되겠지만, 앱 개발자는 HTTP(S) 헤더와 Android WebView의
CookieManager API
를 사용해 접근하는 쿠키에 대해 모두 None 값을 지원하는 Chrome 버전을 기준으로 Android WebView에 알맞는 쿠키 설정을 해야합니다.
SSO(Single Sign-On) 또는 내부 애플리케이션과 같은 일부 서비스가 2월 출시 일정에 맞춰 준비되지 않을 경우, 엔터프라이즈 IT 관리자는 Chrome 브라우저를 레거시 동작으로 임시로 되돌리기 위한
특별 정책
을 구현해야 할 수도 있습니다.
first-party 와 third-party 컨텍스트에 모두 접근하는 쿠키가 있는 경우, same-site 컨텍스트에서 SameSite=Lax의 보안 이점을 누리기 위해 별개의 쿠키를 사용하는 방법을 고려할 수도 있습니다.
SameSite Cookies Explained
에서 위와 같은 상황에 대한 구체적인 안내와 문제 제기 및 질문을 위한 채널을 제공합니다.
Chrome의 새로운 동작이 사이트 또는 쿠키에 미치는 영향을 테스트하려면 Chrome 76 이상에서 chrome://flags로 이동하여 'SameSite by default cookies' 및 'Cookies without SameSite must be secure' 실험실 기능을 사용할 수 있습니다. 또한 이런 실험실 기능은 Chrome 79 베타 사용자 중 일부에게는 자동으로 활성화됩니다. 실험실 기능이 활성화된 베타 버전의 일부 사용자는 아직 새 모델을 지원하지 않는 서비스를 사용할 때 비호환성 문제를 겪을 수도 있습니다. 그럴 때는 chrome://flags로 이동해 베타 실험실 기능을 비활성화하면 선택 해제할 수 있습니다.
Same-site 컨텍스트에서만 접근되는 쿠키(same-site 쿠키)를 관리하는 경우 개발자 측에서 필요한 조치 사항은 없습니다. SameSite 속성이 누락되었거나 아무런 값도 설정되어 있지 않더라도 Chrome이 외부 항목에서 이런 쿠키에 접근하지 못하도록 자동으로 차단할 것입니다. 하지만 모든 브라우저에서 same-site 쿠키를 기본적으로 보호하는 것은 아니므로, 알맞은 SameSite 값(
Lax
또는
Strict
)을 반드시 적용하고 브라우저의 기본 동작에 의존하지 않는 것이 좋습니다.
마지막으로, 웹사이트에 서비스를 제공하는 벤더와 다른 사업자의 준비 상태가 걱정될 경우, 필수 설정이 누락된 cross-site 쿠키가 페이지에 들어 있을 때 Chrome 77 이상에서 Developer Tools 콘솔에서 경고 를 확인할 수 있습니다.
(일부 Google 서비스를 포함한) 일부 공급자는 2월에 Chrome 80이 출시될 때까지 남은 몇 개월간 필요한 변경 사항을 구현할 것입니다. 파트너에게 연락해 그들의 준비 상황을 확인해 볼 수도 있을 것입니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed