V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq5745965425
V2EX  ›  问与答

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

  •  
  •   qq5745965425 · 2016-08-12 16:57:36 +08:00 · 10646 次点击
    这是一个创建于 3049 天前的主题,其中的信息可能已经有所发展或是发生改变。

    感觉有必要研究下 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 的理由吗?

    谢谢

    8 条回复    2017-03-07 23:19:55 +08:00
    wecoders
        1
    wecoders  
       2016-08-12 17:26:58 +08:00   ❤️ 1
    说几点,不针对问题答复
    1 、 JWT 的密串是服务端生成的
    2 、中间人修改密串后,服务端会校验不过
    3 、 JWT 也可以用 cookie

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

    sessionless 跟 stateless 是两个概念.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3850 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.