localStorage の保存期間が最長7日間に
後述しますが、これはSafari限定の仕様です。
他のブラウザ(Chrome、Firefox等)では変更や影響はありません。
はじめに
データベースを用意せず手軽にブラウザに情報を保存できる機能としてWebストレージ(sessionStorage
, localStorage
)があります。
本記事に主題から逸れてしまうので簡潔な説明となりますが、それぞれ以下の違いがあります。
-
sessionStorage
同一セッション及びタブ内でのみ有効。セッションを終える(タブを閉じる)と保存情報は破棄される -
localStorage
セッションを終えても当該ブラウザに永続的に保存
※ただしユーザー処理や容量、その他制限による明示的削除された場合を除く
これらWebストレージは便利なのですが、その性質上センシティブな情報(IDやパスワードなど個人情報)を保存するのはセキュリティリスクがあります。
現在筆者はセキュリティ関連の書籍を読んでおり、その中で上記情報に加えてlocalStorage
のデータ永続保存についての説明がありました。
しかし、Safariでは仕様が異なるという情報が記載されていなかったので「勘違いしたまま使用される人も少なくないかも」と感じたことから記事にしてみようと思いました。
Safari の ITP(Intelligent Tracking Prevention)
Intelligent Tracking Prevention とは、ユーザーのプライバシー保護を目的として、Safariに搭載されたトラッキング防止機能。Safari 11.0 以降のブラウザに搭載されていて、段階的に条件が厳しくなってきているそうです。
この機能に準ずる形でSafariにおいてだけlocalStorage
が特別な仕様(保存期間が最長7日間)となったようですね。
- ITP 2.3(2019年):特定条件下でlocalStorageが7日間制限
- ITP 2020年3月版:条件が拡大し、より多くのサイトが対象に
他のブラウザ(Chrome、Firefox等)では localStorage は従来通り永続的
冒頭でお伝えした通り、これは他のブラウザ(Chrome、Firefox等)には該当しません。
他のブラウザ(Chrome、Firefox等)では localStorage は従来通り永続的に保存してくれます。
まとめ
余談ながら筆者は、ある個人開発でlocalStorage
を用いたアプリを作っていて、その時に今回のSafari独自仕様のことを知っていました。
当時思ったのは(今でも思っています)、昨今のプライバシー保護の事情からAppleは対応したと思いますが、普遍的な機能のコア部分を変更して独自仕様とするのは混乱を招きそうだなと。
実際、筆者の読んでいる書籍では明言されていなかったように、あまり知られていないことなのかもしれません。
(※少し調べてみたところWebマーケティング関連ではある程度知られているそうです)
特に iPhone率(モバイルでの Safari シェア)が高い日本では、この制限を考慮したほうが良いと思います。
あと、重要なデータの保存は従来通りデータベースなどサーバーサイドでの永続化が無難ですね。
本記事がlocalStorage
の(Safari限定)仕様理解に少しでも寄与できれば幸いです。
ここまで読んでいただき、ありがとうございました。