jwt token 和 传统 session 相比,究竟,分别在什么场景有什么优势

2016-08-12 16:57:36 +08:00
 qq5745965425

感觉有必要研究下 jwt

网上了解了一下

假设我的环境如下:

https 加密全站

api 服务于 app 和 web

我的理解目前如下:

如果 api 返回数据给浏览器,用 session 没有问题。 如果要返回数据给 app ,那么 app 不支持 cookies ,就可能无法授权获取数据。

然后我的疑问大概如下:

1.听说用 session 会浪费服务器的内存?好像是说 session 存在服务器内存(数据库)里

2.jwt 和 session 的差距难道只是适用的平台不同吗?( web 和 app )

3.jwt 传送的数据如何防止串改?比如我要修改 id 为 1 用户的 name 为 123 ,假如对方嗅探到了 jwt ,他解码后修改,重新打包加密传送给服务器不行吗?因为这个数据也是我本地生成的,那么应该可以伪造才对呀?或者在这之前,服务器和客户端已经约好了另外一个密钥?

4.jwt 数据传送给服务器,服务器要解密,解密过程会浪费服务器性能,相比用 cookie ,是不是更容易遭受 cc 攻击?

能告诉我,你选择 jwt ,而不是选择 session 的理由吗?

谢谢

10447 次点击
所在节点    问与答
8 条回复
wecoders
2016-08-12 17:26:58 +08:00
说几点,不针对问题答复
1 、 JWT 的密串是服务端生成的
2 、中间人修改密串后,服务端会校验不过
3 、 JWT 也可以用 cookie

JWT 是无状态的
qq5745965425
2016-08-12 17:34:52 +08:00
@wecoders 谢谢, 冒昧再次请问, jwt 秘串,是每次随机生成吗,还是整个网站开始运行的时候只初始化运行一次呢
wecoders
2016-08-12 17:36:23 +08:00
@qq5745965425 登录的时候,也可以定期 refresh
qq5745965425
2016-08-12 17:41:51 +08:00
@wecoders 哦哦谢谢,每次登录都随机生成一个密串,那么这个密串服务器也会存一份是吗
franklinyu
2016-08-13 00:13:23 +08:00
应用不支持 cookies ?至少 iOS 是支持的
franklinyu
2016-08-13 00:16:58 +08:00
而且 JWT 为什么会被篡改?不是已经有 HTTPS 了么
qq5745965425
2016-08-13 09:57:40 +08:00
@franklinyu 谢谢
avatasia
2017-03-07 23:19:55 +08:00
翻个老贴, jwt 非常尴尬.
无 session, 分布式, 无存储,但是要想正常使用,必须加数据库配合, 跟 cookie-session 的机制没啥区别, session 也可以无 cookie.

sessionless 跟 stateless 是两个概念.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/298915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX