cookie的使用
https://blog.csdn.net/qq_58168493/article/details/122492358
session的使用
https://blog.csdn.net/qq_45593068/article/details/108585123
jwt,cookie,session关系
https://mp.weixin.qq.com/s/5oFKdbFWgZrwqESNTZn77w
jwt与cookie
https://blog.csdn.net/weixin_45070175/article/details/118559272
个人理解:
cookie,session
cookie是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
用户使用浏览器访问,直到退出,为一个session(会话),浏览器首先判断用户是否是否有cookie,如果没有,用户输入用户名密码登陆后, 服务器会创建一个;如果有,则可以直接访问需要登陆的页面。
服务器创建的cookie里面包含了用户名,密码(加密后),由服务器发送给浏览器,在浏览器之中保存;
在下次登陆时,浏览器携带cookie在request header之中,一起发送给服务器,这样就不再需要用户的二次登陆
session保存在服务器中,cookie保存在浏览器中。
session,token
但是随着用户量的增大,需要负载均衡(使用多台服务器),「如果继续使用session,会造成一个用户在一次的使用中,创建了多个session,所以为了避免这种情况,可以使用jwt」
JWT,即json web token是由3部分组成的,header、payload、signature
header声明使用的签名算法,
payload保存一些数据,比如用户uid,但是不能携带密码等敏感数据,
signature:签名,server根据header使用签名算法,再用密钥对header+payload进行签名
注:签名算法:其共同特点是不可逆,其他的签名算法,比如MD5,sha等等
公钥私钥:使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。
如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密
header、payload:是以一种编码形式存在
jwt可存放在浏览器的cookie/storage中,但是jwt很长,一般存放于storage
为什么使用了签名,就可以防止篡改?
——有两种签名加密方式,对称和非对称加密;非对称加密中,私钥进行加密,公钥进行解密;
私钥首先对原本的文件进行哈希运算,然后进行签名运算(加密),得到数字签名。「此数字签名可以被公钥解密」
公钥对签名进行解密运算,可以得到私钥签名的哈希值,和当前文件的哈希值比较,就可以知道文件的内容是否被篡改。
为了确保签名的文件不被其他人使用他们的私钥签名修改,还需要加上CA数字证书。
总结: