每个人都在谈论不要将 jwt 存储在本地存储中以确保在线安全。 但事实上,在 REST API 不支持基于 cookie 的身份验证的情况下,我使用 SPA + Rest API 集成的项目都没有使用“安全最佳实践”来实现。
我从这里看到了两种解决方案。要么 Rest API 接受 cookie,要么我们在传递给 REST API 之前有另一个 SPA 后端代理。
这两者都需要投入额外的精力,特别是当 REST API 不受您控制时,大多数时候最终都是在本地存储中设置 jwt。
还有其他方法吗????如果你们中的任何人在使用 SPA + JWT 和 REST API 时真正遵循存储在 cookie 而不是本地存储中的安全最佳实践,我很高兴。
许多安全最佳实践都是权衡的。不遵循某种做法(例如不使用 HttpOnly cookie)并不一定意味着存在安全漏洞,但它可以意味着如果您有一个单独的更实际的安全问题,攻击者将更容易利用。
将您的代币存储在 LocalStorage 中并不是世界末日,但最好避免它。
但是,如果安全性是您的首要任务,那么还有更好的解决方案。不要直接从浏览器与第三方 REST api 对话,而是在同一域上创建一个中间服务,该服务代表您发出请求,并拥有自己的基于会话/cookie 的身份验证系统。