5

我没有使用 cookie,而是使用随每个请求发送的 JWT 令牌。每个请求都是一个 POST 请求,因此令牌不会保存在浏览器的历史记录中。

这是一个单页应用程序。

令牌看起来像:

{
    userId: 12345678,
    expires: <UNIX timestamp>,
    otherInfo: <something>
}

一切都是 SSL 安全的。用户登录时在服务器上创建令牌。

这会是替换 cookie 的好方法吗?或者您是否发现任何缺陷?

4

1 回答 1

1

不,这不是一个好的解决方案。使用 cookie(带有httpOnly标志)进行跨请求持久性不是可选的 - 这是安全存储会话凭据的唯一方法,这样页面上的 JavaScript 代码就无法直接访问它。

这是必不可少的,以防止例如。XSS 攻击中的会话窃取,通过确保脚本无法访问凭据,但它们仍可用于对服务器的请求。

您对 JWT 的使用似乎也不能真正解决问题 - 为什么您不能使用现有会话实现来使用会话 cookie?这种东西正是他们的目的。

于 2016-09-14T21:07:37.677 回答