我如何 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)
}
})
我正在用 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)
}
})