感觉有必要研究下 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 的理由吗?
谢谢
1
wecoders 2016-08-12 17:26:58 +08:00 1
说几点,不针对问题答复
1 、 JWT 的密串是服务端生成的 2 、中间人修改密串后,服务端会校验不过 3 、 JWT 也可以用 cookie JWT 是无状态的 |
2
qq5745965425 OP @wecoders 谢谢, 冒昧再次请问, jwt 秘串,是每次随机生成吗,还是整个网站开始运行的时候只初始化运行一次呢
|
3
wecoders 2016-08-12 17:36:23 +08:00 1
@qq5745965425 登录的时候,也可以定期 refresh
|
4
qq5745965425 OP @wecoders 哦哦谢谢,每次登录都随机生成一个密串,那么这个密串服务器也会存一份是吗
|
5
franklinyu 2016-08-13 00:13:23 +08:00 1
应用不支持 cookies ?至少 iOS 是支持的
|
6
franklinyu 2016-08-13 00:16:58 +08:00 1
而且 JWT 为什么会被篡改?不是已经有 HTTPS 了么
|
7
qq5745965425 OP @franklinyu 谢谢
|
8
avatasia 2017-03-07 23:19:55 +08:00
翻个老贴, jwt 非常尴尬.
无 session, 分布式, 无存储,但是要想正常使用,必须加数据库配合, 跟 cookie-session 的机制没啥区别, session 也可以无 cookie. sessionless 跟 stateless 是两个概念. |