PowerScan
KO

쿠키, Local Storage, IndexedDB: 세션의 실체

안티디텍트 브라우저 · 읽는 데 7분 · 작성자 PowerOps

사진: Unsplash

로그인하면 서로 다른 세 곳에 기록됩니다. 어느 것이 무엇인지 알면 세션이 어떤 일에는 살아남고 어떤 일에는 깨지는지, 그리고 프로필을 동기화하려면 왜 셋 모두를 옮겨야 하는지 이해할 수 있습니다.

"로그인된 상태"는 하나처럼 느껴집니다. 하지만 실제로는 최소 세 가지이며, 서로 다른 세 곳에 서로 다른 수명으로 저장됩니다. 이 차이가 컴퓨터 사이에서 세션을 옮길 때 사람들이 마주치는 혼란스러운 현상의 대부분을 설명합니다.

쿠키

해당 값을 설정한 사이트로 가는 모든 요청에 자동으로 함께 전송되는 작은 키-값 쌍입니다. 세션 토큰은 보통 여기에 있습니다.

쿠키는 셋 중 가장 작지만 가장 많은 것을 떠받칩니다. 쿠키를 잃으면 로그아웃됩니다.

Local Storage와 Session Storage

페이지 JavaScript가 읽고 쓰는, 출처(origin)별로 한정되는 문자열 키-값 저장소입니다. 요청과 함께 전송되는 일은 없으며, 페이지가 의도적으로 읽어야 합니다.

애플리케이션은 여기에 환경설정, 캐시된 프로필 정보, 기능 플래그, 그리고 종종 리프레시 토큰을 보관합니다. Local Storage는 삭제될 때까지 유지되고, Session Storage는 탭이 열려 있는 동안만 유지됩니다.

IndexedDB

브라우저 안의 진짜 데이터베이스로, 구조화된 레코드, 인덱스, 트랜잭션을 갖췄습니다. 최신 웹 애플리케이션이 캐시된 메시지 기록, 오프라인 대기열, 종단간 암호화 기능의 암호화 키 같은 중요한 데이터를 보관하는 곳입니다.

프로필에 이것이 중요한 이유

이것은 "격리"에 정확한 의미를 부여합니다. 두 프로필이 격리되었다는 것은 이 셋이 모두 분리되어 있고, 캐시와 확장 프로그램 상태도 분리되어 있다는 뜻입니다. 쿠키는 격리하면서 IndexedDB를 공유하는 도구는 문제의 쉬운 3분의 1만 격리한 것입니다.

또한 컴퓨터 사이에서 프로필을 옮길 때의 기준도 정해 줍니다. 쿠키만 옮기면 세션의 겉모양만 재현될 뿐 실체는 없습니다.

저장소기록하는 주체주로 담는 것
쿠키서버와 페이지 스크립트세션 토큰, 환경설정, 추적 식별자
Local Storage페이지 스크립트리프레시 토큰, UI 상태, 캐시된 프로필 정보
Session Storage페이지 스크립트탭별 상태, 탭을 닫으면 폐기됨
IndexedDB페이지 스크립트캐시된 데이터, 오프라인 대기열, 암호화 키

내 컴퓨터 사이에서 세션 옮기기

PowerOps는 프로필이 닫힐 때 쿠키, Local Storage, IndexedDB를 캡처하고 다른 곳에서 열릴 때 복원합니다. 각 범주는 워크스페이스 전체 또는 개별 프로필 단위의 스위치이므로 의도한 만큼만 정확히 옮길 수 있습니다.

이 방식에 대해 알아 둘 두 가지 특성이 있습니다.

두 번째는 의도된 제약입니다. 두 컴퓨터가 하나의 세션을 각자 수정하면 반쯤만 유효한 세션 두 개가 생기고, 흔히 양쪽 모두에서 계정이 로그아웃됩니다. 쿠키 저장소에는 병합 충돌을 해결할 방법이 없습니다.

실용적인 결론

프로필은 강제 종료하지 말고 닫으세요. 닫을 때 기록되는 내용이 세션을 이동 가능하게 만들며, 이 목록에서 가장 비용이 적게 드는 습관입니다.

모든 글 · 스캔 실행