Javascript 如何检测/避免对缓存的基于React的应用程序进行更新?或者如何在缓存失效发生之前检测它?

Javascript 如何检测/避免对缓存的基于React的应用程序进行更新?或者如何在缓存失效发生之前检测它?,javascript,reactjs,security,caching,cache-invalidation,Javascript,Reactjs,Security,Caching,Cache Invalidation,我正在React中开发一个应用程序,它在客户端进行加密,并将加密内容发送回服务器进行安全存储(例如,想想在线钱包)。这很有效,因为数据是安全的,以防恶意用户访问数据。但是,如果黑客访问服务器并更改实际的React代码,以原始格式(而不是加密格式)发送数据,这将破坏整个系统 那么,我如何强制React应用程序只缓存一次,然后在将来的任何时候,在它提取新版本的应用程序之前,它会警告用户“有新的更新可用,他们需要检查twitter和/或GitHub以确保有效性” 基本上,我需要在“缓存失效”尝试发生之

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

那么,我如何强制React应用程序只缓存一次,然后在将来的任何时候,在它提取新版本的应用程序之前,它会警告用户“有新的更新可用,他们需要检查twitter和/或GitHub以确保有效性”


基本上,我需要在“缓存失效”尝试发生之前检测它们并警告用户。我如何才能做到这一点?

您可能需要考虑以下几个选项:

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

  • 创建对象的


这是一个很好的使用案例,如果你使用Create-React-app创建了你的应用程序,你的src目录中应该已经有一个serviceworker.js文件,是的,我想使用serviceworks,但是没有办法防止更新内容,是吗?我希望用户能够说“即使有新内容,也不要更新”,因为这可能会有潜在的危险。我对此感到不安,就像你担心前端是否真的应该“信任”后端一样。听起来您正试图将缓存作为解决此信任问题的方法的一部分。如果你有理由认为你的服务器是一个大目标,我建议你建立一个强大的安全系统,这样你就可以监控/检测入侵。此外,我也不明白当服务器被破坏后,浏览器首次加载应用程序时,缓存将如何防止这种情况。没有缓存可以失效,因此即使它被破坏,默认情况下它也会信任。这是一个很好的答案,但应该通过添加来自主线程的注释来改进,即:(1)使用GitHub页面,从而将信任问题转发给GitHub;(2)使用服务工作者
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)
  }
})