我正在React中开发一个应用程序,该应用程序在客户端进行加密,并将加密的内容发送回服务器以进行安全存储(例如,考虑在线钱包(。这样做效果很好,因为数据是安全的,以防有人恶意访问数据。然而,如果黑客访问了服务器,更改实际的React代码,以原始格式而不是加密格式将数据发回,这将破坏整个系统。
那么,我如何才能强制React应用程序只缓存一次,然后在未来的任何时候,在它提取新版本的应用程序之前,它都会警告用户";新的更新可用,并且他们需要检查twitter和/或GitHub以确保有效性";?
基本上我需要检测";高速缓存无效";尝试,并警告用户。我怎么能这么做?
您可能需要考虑的几个选项:
-
第一次加载数据后,在缓存中设置
object.freeze()
,然后使用try/catch
检测另一次写入尝试。 -
创建对象的代理
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)
}
})