我如何 detect/avoid 更新我缓存的基于 React 的应用程序?或者如何在缓存失效发生之前检测到它?

How can I detect/avoid updates to my cached React-based App? Or how can I detect a cache-invalidation before it happens?

我正在用 React 开发一个应用程序,它在客户端进行加密并将加密的内容发送回服务器以进行安全存储(例如考虑在线钱包)。这很有效,因为数据是安全的,以防有人恶意访问数据。但是,如果黑客可以访问服务器并更改 实际 React 代码以原始格式而不是加密格式发送回数据,这将破坏整个系统。

那么我怎样才能强制 React 应用程序只缓存一次,然后在将来的任何时候,在它拉取应用程序的新版本之前,它会警告用户“有新的更新可用并且他们需要检查推特 and/or GitHub 以确保有效性"?

基本上我需要在“缓存失效”尝试发生之前检测它们并警告用户。我该怎么做?

您可能想考虑的几个选项:

  • 在第一次加载数据后在缓存上设置 object.freeze(),然后使用 try/catch 检测另一次写入尝试。

  • 创建一个Proxy对象

const cache = Proxy({
  isSet: false,
  data: {}
}, {
  set(obj, prop, value) {
    if (prop === 'isSet') throw new ReferenceError()
    if (obj.isSet) throw new Error('Cache already set')
    obj.isSet = true
    return Reflect.set(...arguments)
  }
})