【问题标题】:Is Redux a secure place to store JWT tokens?Redux 是存储 JWT 令牌的安全场所吗?
【发布时间】:2020-06-20 20:49:39
【问题描述】:

我一直在自学 Redux,想知道在 Redux 状态下存储 JWT 令牌有多安全。

例如,这里有一个reducer,它负责设置和重置一个token。

export default function loginReducer(state = {
    token: "",
}, action) {
switch (action.type) {
    case "SET_TOKEN":
        {
            return {
                ...state,
                token: action.data,
            }
            break;
        }
    //other cases here
    return state
}

然后,您可以通过以下方式存储令牌。

    handleSubmit(values) {
        //Calling an API to get a token.
    }).then((response) => {
            response.json().then((jsonReponse) => {         
             //This is where the token is stored!
        this.props.dispatch(loginAction.setToken(jsonReponse.token));
            });
        });
    }

使用 Redux 的主要目的是将状态组织在一个地方,所以我认为在那里维护令牌是合理的。

但是,我还没有找到一个很好的信息资源来解释这样做的安全性/脆弱性。

(我发现了几篇关于 localStorage 与 Cookies 的帖子。Apparently Cookies would be a secure place for storing tokens, as far as I've researched)

任何建议将不胜感激!

【问题讨论】:

    标签: html cookies redux


    【解决方案1】:

    在客户端存储它的位置并不重要。如果恶意代码通过 XSS 攻击进入,那么没有什么是真正安全的。如果恶意代码没有进入,没有什么是真正不安全的。只是不要让用户彼此共享他们的商店,并做其他通常是良好安全实践的事情。

    【讨论】:

      【解决方案2】:

      您可以将 JWT 存储在 Redux 中,我可以在那里看到您的动机,但请考虑一下:

      • 当页面刷新或用户离开站点并返回JWT 丢失。你将如何取回它?从服务器请求另一个?

      只要您遵循网络安全和 JWT 令牌的所有最佳实践(即设置 expiry),您就不必太担心 JWT(本地存储或 cookie)的存储位置。

      我亲自将它们存储在本地存储和 cookie 中。饼干似乎是更好的选择。

      【讨论】:

      • "redux-persist" 可用于在用户离开站点并稍后返回时保留令牌
      • @JasonNoronha 这基本上是本地存储
      【解决方案3】:

      我知道很久以前就有人问过这个问题,但我想我会分享一下,以防有人正在寻找更好的方法。

      为了回答您的问题,它可以是存储 JWT 的安全位置,但这取决于您对持久化 JWT 的看法。

      这是我的方法。如果您使用的是 SPA 前端,并且实现了刷新令牌,则可以将该刷新令牌保存在 httpOnly cookie 中,并在用户启动新会话时获取新的 JWT。这样,CSRF/XSS 攻击的可能性就会降低。我不会说它是当今时代最安全的,但我个人觉得它更安全,因为它只是稍微暴露了刷新令牌,即使它被设置为 httpOnly。

      【讨论】:

        猜你喜欢
        • 2021-09-26
        • 2015-12-19
        • 2018-11-12
        • 2014-08-16
        • 2019-02-01
        • 2020-08-22
        • 1970-01-01
        • 2018-12-07
        • 2019-05-06
        相关资源
        最近更新 更多