在启用SSL的站点上使用JWT而不是Cookie

xrD*_*DDD 5 security cookies jwt

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

这是一个单页面的应用程序.

令牌看起来像:

{
    userId: 12345678,
    expires: <UNIX timestamp>,
    otherInfo: <something>
}
Run Code Online (Sandbox Code Playgroud)

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

这是替换cookie的好方法还是看到任何缺陷?

Sve*_*weg 1

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

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

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