服务工作者:使用 IndexedDB 缓存 POST 请求 - 安全问题

Posted

技术标签:

【中文标题】服务工作者:使用 IndexedDB 缓存 POST 请求 - 安全问题【英文标题】:Service worker: caching POST requests with IndexedDB - security concerns 【发布时间】:2020-08-30 09:59:10 【问题描述】:

如果我错了,请纠正我,但我觉得我读过的每一篇关于服务工作者的文章都只涵盖一个用例:非常简单的“静态”网站。比如“在这里,你可以使用 SW 缓存你的图片,现在你的应用可以离线工作了。结束。”。

嗯...我有一个现有的应用程序,假设它是一个“待办事项列表”:用户登录并可以查看/修改列表。服务器通信基于 POST 请求 (JSON)。

现在,我想让它离线工作:用户应该仍然可以查看列表(这次来自缓存)。 使用 IndexedDB 缓存 POST 请求非常容易,但如何安全呢? 列表可能包含敏感数据,如果未加密,每个人都可以打开 DevTools 并浏览它们。

有什么建议和想法吗?我至少需要某种程度的安全性。 我的第一个 - 不是一个好主意 - 是使用用户的凭据加密缓存的数据,但这不起作用:凭据仅在登录时才知道,并且在页面刷新后丢失。

【问题讨论】:

【参考方案1】:

如何使用会话 ID(来自 cookie)加密缓存数据? 如果用户注销或会话(cookie)过期 - cookie 被删除并且解密密钥丢失。

但是,根据this comment:

是的,某些 Firefox 版本似乎会永久保存过期的 cookie。 我刚刚从我的 Firefox 中删除了一些 cookie,这些 cookie 在 4 月到期 2012 年。(不过,有更新的 cookie 具有相同的域名和名称。)

我知道,评论很旧(2013 年),但还是有点担心

【讨论】:

也不起作用,您无法从服务人员访问 cookie:***.com/questions/35447567/…

以上是关于服务工作者:使用 IndexedDB 缓存 POST 请求 - 安全问题的主要内容,如果未能解决你的问题,请参考以下文章

懂你网络系列7之浏览器缓存cookie,sessions,localStorage,sessioStoage,indexedDB

web网站使用indexedDB缓存大数量案例

IndexedDB浏览器本地存储缓存数据库CookieLocal StorageSession StorageWeb SQL

chrome开发工具指南

vue+elementUi+IndexedDB完整代码浏览器本地存储缓存数据库openaddgetAllopenCursorputdeletewindowobjectStore

缓存 - IndexedDB - Dexie.js