我没有使用 cookie,而是使用 JWT token ,该 token 随每个请求一起发送。每个请求都是 POST 请求,因此 token 不会保存在浏览器的历史记录中。
这是一个单页应用程序。
token 看起来像:
{
userId: 12345678,
expires: <UNIX timestamp>,
otherInfo: <something>
}
一切都受 SSL 保护。 当用户登录时,该 token 会在服务器上创建。
这是替换 cookie 的好方法还是您发现任何缺陷?
最佳答案
不,这不是一个好的解决方案。使用 cookie(带有 httpOnly
标志)进行跨请求持久性是不可选的 - 这是安全存储 session 凭据的唯一方法,这样页面上的 JavaScript代码无法直接访问它。
这对于防止例如。通过确保脚本无法访问凭据,但它们仍然可以在对服务器的请求中使用,在 XSS 攻击中窃取 session 。
您对 JWT 的使用似乎也没有真正解决问题 - 为什么您不能仅使用现有 session 实现来使用 session cookie?这种东西正是它们的用途。
关于security - 在启用 SSL 的网站上使用 JWT 代替 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728916/