在启用SSL的网站上使用JWT代替Cookie

5

我使用JWT令牌代替cookie,每个请求都带有该令牌。为了避免令牌被保存在浏览器历史记录中,每个请求都是POST请求。

这是一个单页面应用程序。

令牌的格式如下:

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

所有内容都采用SSL安全保护。

在用户登录时,令牌(token)是在服务器上创建的。

您认为这是否是替代cookie的好方法?或者您是否认为存在任何缺陷?


为什么浏览器历史记录对单页应用程序甚至对GET请求都可能成为问题? AJAX请求不会出现在浏览器历史记录中。但最好将令牌放入“授权”标头中,以防止在使用GET请求时意外出现在访问日志中。 - Vilmantas Baranauskas
1个回答

1
不,这不是一个好的解决方案。使用带有httpOnly标志的cookie进行跨请求持久性存储是必须的,而不是可选项 - 这是安全地存储会话凭据的唯一方法,以使页面JavaScript代码无法直接访问它。
这对于防止例如XSS攻击中的会话窃取至关重要,通过确保脚本无法访问凭据,但仍可以在请求中使用它们。
您对JWT的使用似乎并没有真正解决问题 - 为什么不能只使用现有会话实现使用会话cookie?这就是它们的用途之一。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接