Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Redux是存储JWT令牌的安全场所吗?_Html_Cookies_Redux - Fatal编程技术网

Html Redux是存储JWT令牌的安全场所吗?

Html Redux是存储JWT令牌的安全场所吗?,html,cookies,redux,Html,Cookies,Redux,我一直在自学Redux,想知道在Redux状态下存储JWT令牌有多安全 例如,这里有一个reducer,负责设置和重置令牌 export default function loginReducer(state = { token: "", }, action) { switch (action.type) { case "SET_TOKEN": { return { ...state,

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

例如,这里有一个reducer,负责设置和重置令牌

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与Cookie的帖子


任何建议都将不胜感激!

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

< P>你可以把JWT存储在ReDux中,我可以看到你的动机,但是考虑一下:

  • 当页面刷新或用户离开站点并返回JWT时,JWT将丢失。您将如何取回它?从服务器请求另一个
只要遵循web安全和JWT令牌的所有最佳实践(即设置
到期
),您就不必太担心JWT(本地存储或cookie)的存储位置


我个人将它们存储在本地存储和cookies中。cookies似乎是一个更好的选择。

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

为了回答您的问题,它可以是一个安全的地方来存储JWT,但这取决于您如何考虑保持JWT


这是我的方法。如果您使用SPA前端,并且实现了刷新令牌,那么您可以将该刷新令牌保存在httpOnly cookie中,并在用户启动新会话时获得一个新的JWT。这样,CSRF/XSS攻击的机会就少了。我不会说它是现代最安全的,但就个人而言,我觉得它更安全,因为它只在一定程度上公开了刷新令牌,即使它被设置为httpOnly。

如果用户离开站点并返回,则可以使用“redux persist”来持久化令牌later@JasonNoronha基本上就是本地存储