Cookie和Session和Token区别与联系

发布时间 2023-04-07 12:07:54作者: dirgo

参考b站up技术蛋老师视频:https://www.bilibili.com/video/BV1ob4y1Y7Ep/

以下截取视频下评论的总结:

ikkiday:

Session 是一种能力:是服务器见鬼说鬼话,见人说人话的能力
Token 是一个字符串凭证:和你的各种证件一样功能的凭证,JWT 恰好是其中一种格式
Cookie 是浏览器中的一个存储技术:历史很久了,不用这个也可以

关于token的安全问题,比如被他人获取冒充:

服务端不存储Token。如果是客户端泄露的话,就看token 是如何存储的,上面说了Cookie 是一种存储技术。同样,token 也可以存储到Cookie,如果存储到Cookie里的token 会泄露,那么存储到Cookie 里的sessionId 同样会泄露。如果不使用Cookie 存储,浏览器还可以使用localStorage, sessionStorage. 客户端可以使用 TEE, KeyStore 等存储方案。

关于copy走token的问题,要有一个前提,用户有义务保证自己的密码安全,不告知他人;同样也有义务保证自己的设备安全,及时锁屏等。现在浏览器设置里面查看自动保存的密码,是需要输入开机密码的,我是建议浏览器在打开控制台功能时,也要输入密码。
当然也可以做一些加固措施,比如把token加密后,存储到localstorage里面,提高窃取成本。

江心明月照:

1.可以做加密,不暴露明文。2.时间戳+token+url做加盐处理,盐值自己定的,不好破解。3.验证ip等。4.https即使被借货也无法读取。

再有token有效期不宜过长。最后,再怎么样token也有被截取的可能,以上措施只是增加让截取成本而已。关键在于token最大的目的就是保持登陆状态,减少用户操作;保密性很强的内容还是要靠用户名密码来验证,比如支付,私密空间等,必须输入密码,不可能用token来验证