저장소 및 쿠키

확장 프로그램은 일반 웹사이트와 유사하게 쿠키를 저장하고 웹 저장소 API에 액세스할 수 있습니다. 그러나 확장 프로그램에서 다르게 동작하는 경우도 있습니다.

확장 프로그램 API에 관한 자세한 내용은 chrome.storage를 참고하세요.

스토리지

확장 프로그램에서 웹 플랫폼 저장소 API를 사용하는 것이 바람직한 경우가 많습니다. 이 섹션에서는 확장 프로그램 컨텍스트에서 이러한 API의 동작을 살펴봅니다. 확장 프로그램 컨텍스트는 웹에서의 동작 방식과 다를 수 있습니다.

지속성

확장 프로그램 저장소는 사용자가 인터넷 사용 기록을 삭제해도 삭제되지 않습니다. 이는 웹 스토리지 API (예: Local StorageIndexedDB)를 사용하여 저장된 모든 데이터에 적용됩니다.

기본적으로 확장 프로그램에는 저장용량에 대한 일반적인 할당량 제한이 적용되며, 이는 navigator.storage.estimate()를 호출하여 확인할 수 있습니다. 드문 경우지만 저장소는 과도한 메모리 압력에서도 제거될 수 있습니다. 이를 방지하는 방법은 다음과 같습니다.

  • "unlimitedStorage" 권한을 요청합니다. 그러면 확장 프로그램과 웹 스토리지 API 모두에 영향을 미치며 할당량 제한 및 제거에서 확장 프로그램이 제외됩니다.
  • 제거 방지를 위해 navigator.storage.persist()를 호출합니다.

확장 프로그램 스토리지는 확장 프로그램 서비스 워커, 모든 확장 프로그램 페이지 (팝업 및 측면 패널 포함), 화면 밖 문서를 비롯한 확장 프로그램의 출처에서 공유됩니다. 콘텐츠 스크립트에서 웹 스토리지 API를 호출하면 확장 프로그램이 아닌 콘텐츠 스크립트가 삽입된 호스트 페이지의 데이터에 액세스합니다.

서비스 워커에서의 액세스

IndexedDBCache Storage API는 서비스 워커에서 액세스할 수 있습니다. 하지만 로컬 저장소세션 저장소는 그렇지 않습니다.

서비스 워커에서 로컬 저장소 또는 세션 저장소에 액세스해야 하는 경우에는 오프스크린 문서를 사용합니다.

파티션 나누기

파티션 나누기는 저장된 데이터에 액세스할 수 있는 위치를 제한하기 위해 키가 도입되는 곳입니다. 스토리지는 이전에 출처로 키가 지정되었습니다.

Chrome 115부터 스토리지 파티션 나누기로 특정 유형의 크로스 사이트 추적을 방지하기 위해 파티션 나누기 키가 정의되는 방식이 변경됩니다. 실제로 사이트 A가 사이트 B가 포함된 iframe을 삽입하는 경우 사이트 B는 직접 이동할 때 일반적으로 사용하는 스토리지에 액세스할 수 없습니다.

확장 프로그램에서 이로 인한 영향을 완화하기 위해 두 가지 예외가 적용됩니다.

  • chrome-extension:// 스키마가 포함된 페이지가 사이트에 삽입된 경우 저장용량 파티셔닝이 적용되지 않으며 확장 프로그램이 최상위 파티션에 액세스할 수 있습니다.
  • chrome-extension:// 스키마가 있는 페이지에 iframe이 포함되어 있고 확장 프로그램에 삽입되는 사이트의 호스트 권한이 있는 경우, 해당 사이트는 최상위 파티션에도 액세스할 수 있습니다.

쿠키

쿠키는 특정 도메인 및 경로와 연결된 키-값 쌍을 저장하는 방법을 제공합니다. 확장 프로그램의 가치가 제한적이지만 특정 사용 사례가 있거나 구현에 사용하는 서드 파티 스크립트를 번들로 묶은 경우 동작을 이해하는 것이 유용할 수 있습니다.

보안 쿠키

Secure 쿠키 속성은 https:// 스키마에서만 지원됩니다. 따라서 chrome-extension:// 페이지에서는 이 속성으로 쿠키를 설정할 수 없습니다.

즉, 확장 프로그램 페이지는 Secure 속성이 필요한 다른 쿠키 속성을 사용할 수 없습니다.

파티션 나누기 및 SameSite 동작

chrome-extension:// 페이지에 설정된 쿠키는 항상 SameSite=Lax을 사용합니다. 따라서 자체 출처의 확장 프로그램에 의해 설정된 쿠키는 프레임에서 절대 액세스할 수 없으며 파티션 나누기는 관련이 없습니다.

확장 프로그램 페이지의 프레임에 로드된 서드 파티 사이트 또는 확장 프로그램 페이지에서 서드 파티 출처로 전송되는 요청과 같은 서드 파티 사이트와 연결된 쿠키의 경우 쿠키는 다음 두 가지 방식을 제외하고는 웹과 동일하게 작동합니다.

  • 서드 파티 쿠키는 특정 탭의 최상위 페이지가 chrome-extension:// 페이지인 경우 하위 프레임에서도 차단되지 않습니다.
  • 확장 프로그램에 서드 파티에 대한 호스트 권한이 있는 경우 확장 프로그램에서 서드 파티로 보낸 요청은 동일 사이트로 처리됩니다. 즉, SameSite=Strict 쿠키를 전송할 수 있습니다. 이는 네트워크 요청에만 적용되며 JavaScript에서 document.cookie를 통한 액세스에는 적용되지 않으며 서드 파티 쿠키가 차단된 경우에는 적용되지 않습니다.

서드 파티 쿠키 관련 설정은 개인 정보 보호 샌드박스 작업의 영향을 받으며 타임라인에 따라 조정됩니다.

chrome.cookies API는 각 API 메서드와 함께 사용할 파티션 키를 제어합니다. 자세한 내용은 API 참조를 확인하세요.