用語辞典・プライバシー・認証

ローカルストレージ

ローカルストレージとは

ローカルストレージは、Webサイトのデータを、ブラウザ内へ同一オリジン単位で保存する仕組みです。API名はlocalStorage(ローカルストレージ)で、Web Storageの一部です。

JavaScriptが文字列の鍵と値を保存・取得・削除します。ブラウザーを閉じても通常は残りますが、利用者の削除、容量管理、プライベート閲覧、ブラウザー方針で消えるため、唯一の正本にはできません。

Cookieと違い、HTTP要求へ自動添付されません。必要ならスクリプトが読み、要求本文やヘッダーへ明示的に入れます。

ブラウザー内の保存棚をオリジンごとに区切り、スクリプトがキーと値を出し入れするタブを閉じても残るが、ネットワークへは自動送信しない
ブラウザー内にオリジンごとの独立した保存引き出しがあり、JavaScriptがキーと値札を出し入れし、タブを閉じて再び開いても残る一方、ネットワークの要求へ自動添付されず、利用者が領域を消去できることを示すピクトグラム図解
図1スキーム・ホスト・ポートが異なれば別オリジンです。同じ端末でもブラウザープロファイルが違えば別の保存領域になります。

オリジンが保存棚の境界になる

Originスキーム・ホスト・ポートで分離

HTTPSとHTTP、別サブドメイン、別ポートは原則として別の保存領域を持つ。

Key-値文字列として保存

オブジェクトはJSONなどへ変換し、バージョンと欠損値をアプリケーション側で管理する。

Persistent明示削除まで残り得る

固定期限はなく、ブラウザー終了だけでは通常消えない。保存保証ではない。

ScriptJavaScriptから同期アクセス

主要スレッドで同期処理されるため、大量データの反復読書きは表示を止める。

Event別文書の変更を通知

同じオリジンの別タブなどへ保存領域イベントが届き、状態同期に使える。

Clear利用者が削除できる

サイトデータ削除、プライベートモード終了、保存領域方針、容量不足で失われ得る。

Cookieとの使い分け

Cookieは送信適用範囲に合うHTTP要求へブラウザーが自動で付け、サーバーとの状態共有に向きます。localStorageはクライアント側 UI設定、draft、キャッシュ鍵などをスクリプトが必要時に使います。

localStorageにはSecure・HttpOnly・SameSiteのようなCookie属性がありません。同じオリジンで実行されたスクリプトは値を読めるため、ログインセッションの長期トークンを置くとXSSによる盗用リスクが高まります。

文字列保存を前提にスキーマを持つ

setItemgetItemは文字列を扱います。JSONへ変換する場合、スキーマバージョン、期限、破損、古い形式からの移行を実装します。

複数タブが同じ鍵を同時更新すると最後の書込みが勝ちます。金融残高や共同編集の正本のようなトランザクションをlocalStorageだけで管理しません。

機密情報と個人データを置き過ぎない

パスワード、復旧コード、決済情報、長期認証情報を保存しません。XSSだけでなく、マルウェア、ブラウザー拡張、共有OSアカウント、端末バックアップから読まれる可能性があります。

必要なデータだけを短く保存し、サーバー側の削除要求や同意撤回に合わせてクライアント側も消せる鍵設計にします。

保存できたことを前提にしない

容量超過、保存領域無効、opaqueオリジン、プライベートモードなどで操作が失敗する場合があります。例外を処理し、保存なしでも基本機能が動く代替処理を用意します。

localStorageは便利な端末内の補助棚です。サーバーのデータベース、ブラウザーキャッシュ、Cookie、sessionStorageとは、送信方法・寿命・境界・信頼性がそれぞれ違います。

Web StorageとlocalStorageの確認資料:WHATWG HTML Standard「Web storage」

関連用語