【问题标题】:redux security - is it possible to access previous state after state reset?redux 安全性 - 状态重置后是否可以访问先前的状态?
【发布时间】:2017-11-15 00:22:21
【问题描述】:

我有一个应用程序可以将用户特定数据保留在 redux 中,当用户注销时必须清除这些数据,即下一个用户在同一个浏览器选项卡中登录应用程序,应该无法访问数据。

因此,应用使用 redux 中间件从 API 获取用户特定数据,然后将这些数据作为部分应用状态存储在 redux 中。当用户注销时,我会发送注销操作以清除状态:

const rootReducer = (state: {}, action: AnyAction) => {
    if( action.type === 'LOG_OUT')
        return {};
    return state;
}

一切似乎都很好,状态被重置为空状态,但我的问题是 - 当用户注销并且用户没有关闭浏览器选项卡时,有人可以使用开发工具或以某种方式在用户注销之前查看状态吗? redux(不使用额外的持久化/历史中间件/增强器)是否将状态存储在开箱即用的某个地方?还是纯粹在浏览器内存中,当状态在注销时重置时,先前的状态消失且无法访问?

【问题讨论】:

    标签: security redux


    【解决方案1】:

    如果没有对前一个状态对象的剩余引用,则浏览器的 JS 引擎将垃圾收集旧状态。这也意味着浏览器的 DevTools 不会检查任何变量。

    Redux 核心本身不保留对先前状态对象的引用。

    【讨论】:

    • 所以为了论证,假设在将状态设置为空对象之前,登录前的状态已分配给减速器内的局部变量 - 我可以从开发工具访问它吗?还有一个问题:通过“state = {}”或“state = undefined”重置状态更好还是有其他更好/推荐的方式?
    猜你喜欢
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多