我正在使用基于JWT的身份验证构建SPA应用程序并进行服务器端呈现。存储在Cookie中的JWT - 安全问题
当前实现:
- JWT令牌发放和成功的用户名和密码验证
- 令牌之后转移到客户端,然后存储在cookie的(不
HttpOnly
) - 的这样做的目的是为了避免需要完全刷新或关闭页面 - 记录与令牌
Authorization
头将已删除的cookie后再次登录连接到每个API请求,如果令牌存在- 完整的SSL流量
我不能在令牌的localStorage存储,因为服务器端渲染,也没有HttpOnly
因为我需要为了构建Authorization
头访问的cookie。
在这样的架构中窃取令牌有什么可能性?
事实上(纠正我,如果我错了)通过cookie发送令牌(因为该cookie存在,并且浏览器自动发送)在初始的,而不是AJAX请求,所以CSRF也是如此。 –
基于你的回答,我认为很好的解决方案是将标记存储在HttpOnly cookie中,然后在初始请求中读取它,并将其保存在Redux JS存储中(正在使用),然后在每一个下一个使用'Authorization'标头REST请求。据我所知,在第一个问题中描述的架构的情况下,在这里需要CSRF保护。你怎么看待这件事? –
在这种情况下,如果您也使用cookie中的令牌,则还必须关心CSRF。如果认证信息是由浏览器自动发送的,CSRF是一个问题。如果会话ID或令牌在Cookie中。如果只有一个请求头用于身份验证,那么在没有针对CSRF的进一步保护的情况下您会很好。我对Redux并不是很熟悉,但如果Cookie是httpOnly,那么您将无法从JavaScript访问它,因此您将无法使用Redux JS进行存储。将JWT存储在httpOnly cookie中使其更安全,但使用案例将受到限制。 –