美文网首页百人计划
图解http协议(3)—cookie、session

图解http协议(3)—cookie、session

作者: 小盼盼_1 | 来源:发表于2020-05-05 13:22 被阅读0次

1.cookie/session字段存在的必要性

http协议是无状态的,即不会对已发生过http请求和响应状态进行保存,这样可以减少服务器端CPU和内存的消耗。但是这种无状态协议并不适合所有的web应用场景,比如去电商网站进行购物,访问网页时需要先登录自己的用户名和密码,登录完成后再去选购商品,此时如果电商网站无法保存此用户的登录态,则用户在进行选购商品的时候需要再登录一次自己的用户名和密码,这样用户的体验太差。

基于这个背景,使用cookie技术[请求和响应的报文中写入cookie信息]来控制客户端的状态;session管理来管理服务器端的状态管理,用来区分不同用户。

2.cookie&session的工作步骤

a.客户端在前端的表单页面输入用户名和密码,将输入的用户名和密码放到http报文的body部分通过post方法传到服务器

b.服务器接收到http报文后,会发送用于识别用户身份的session ID。即服务器会针对这台客户端的认证信息会跟分配给他的session ID一一匹配,比如客户端A输入了用户名A,客户端B输入了用户名B,则服务器会给客户端A分配session IDA,会给客户端B分配session IDB。

注:session ID要是被第三方用户窃走的话,则第三方用户可以伪装成你进行一些相关操作,所以Session ID需要使用一些复杂的加密算法生成,同时也需要提高服务器上对于session ID的管理。

c.服务器处理完http报文的请求后,会将b步骤分配的session ID通过响应报文中首部字段Set-Cookie回传给客户端

d.客户端收到了服务器的响应后,会将Set-cookie字段作为Cookie字段保存到本地。下次再向服务器发送请求时会将Cookie字段包含在请求报文中

e.服务器再次收到http报文,由于其中带有Cookie信息[session ID字段],可快速识别客户端的身份。即客户端无需再次输入用户名和密码来验证身份。

3.安全方面一些处理方法

a.服务器生成一个有一定长度的随机值[salt],将这个随机值和密码结合起来生成散列值。

b.当用户使用密码进行登录的时候,随机生成的salt不同,则散列值也不一样。同一个用户下次登录的时候,截取到http报文中关于密码的部分值也不一样。可以减少攻击者通过靠自己手中的用户名和密码,捕获多次http请求后,破解密码加密的方式去破解其它用户密码的可能性。


相关文章

网友评论

    本文标题:图解http协议(3)—cookie、session

    本文链接:https://www.haomeiwen.com/subject/jwipghtx.html