Html Redux是存储JWT令牌的安全场所吗?
我一直在自学Redux,想知道在Redux状态下存储JWT令牌有多安全 例如,这里有一个reducer,负责设置和重置令牌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,
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将丢失。您将如何取回它?从服务器请求另一个
到期
),您就不必太担心JWT(本地存储或cookie)的存储位置
我个人将它们存储在本地存储和cookies中。cookies似乎是一个更好的选择。我知道很久以前就有人问过这个问题,但我想我会分享一下,以防有人在寻找更好的方法 为了回答您的问题,它可以是一个安全的地方来存储JWT,但这取决于您如何考虑保持JWT
这是我的方法。如果您使用SPA前端,并且实现了刷新令牌,那么您可以将该刷新令牌保存在httpOnly cookie中,并在用户启动新会话时获得一个新的JWT。这样,CSRF/XSS攻击的机会就少了。我不会说它是现代最安全的,但就个人而言,我觉得它更安全,因为它只在一定程度上公开了刷新令牌,即使它被设置为httpOnly。如果用户离开站点并返回,则可以使用“redux persist”来持久化令牌later@JasonNoronha基本上就是本地存储