メインコンテンツまでスキップ

[Medium] 📄 cookie, sessionStorage, localStorage

比較

属性cookiesessionStoragelocalStorage
ライフサイクル有効期限(Expires)または最大保存時間(Max-Age)を設定しない限り、デフォルトでページを閉じると削除ページを閉じると削除明示的に削除するまで永久保存
HTTP Requestはい、Cookie header を通じてサーバーに送信可能いいえいいえ
総容量4KB5MB5MB
アクセス範囲ウィンドウ/タブをまたぐ同一タブのみウィンドウ/タブをまたぐ
セキュリティJavaScript は HttpOnly cookies にアクセスできないなしなし

用語解説

Persistent cookies とは何か?

永続的 cookie は、データをユーザーのブラウザに長期間保存する方法です。具体的には、上記で述べた有効期限を設定することで実現します(Expires または Max-Age)。

個人的な実装経験

1. セキュリティ検証

一部のレガシープロジェクトはセキュリティ状況が良くなく、アカウント乗っ取りの問題が頻発し、運用コストが大幅に上昇していました。まず Fingerprint ライブラリ(コミュニティ版の精度は約 60%、有料版の月間無料枠は 2 万回)を採用し、ログインするユーザーをデバイスと位置情報のパラメータで一意の visitID として識別しました。次に、cookie の HTTP リクエストのたびに送信される特性を利用して、バックエンドがユーザーの現在の状況(デバイスの変更や所在地の異常な変化)をチェックし、異常が検出された場合にログインフローで OTP 検証(会社の要件に応じてメールまたは SMS)を強制的にトリガーしました。

2. プロモーションコード URL

製品サイトの運営時、アフィリエイトマーケティング戦略として協力パートナーに専用 URL を提供し、集客とプロモーションを容易にしていました。これらの集客経由で入ってきた顧客がそのプロモーターの実績に属することを確保するため、cookieexpires 特性を使って実装しました。ユーザーがサイトに流入してから 24 時間以内(制限時間は運営側が決定可能)はプロモーションコードが有効となり、ユーザーが意図的に URL のプロモーションコードパラメータを削除しても、登録時に cookie から対応パラメータを取得して適用し、24 時間後に自動的に失効します。

localStorage

1. ユーザー設定の保存

  • ユーザーの個人設定の保存に頻繁に使用されます。例:ダークモード、i18n の言語設定など。
  • またはログインの token の保存。