前言:cookie

http申请是无状态的,即每次服务端接管到客户端的申请时,都是一个全新的申请,服务器并不知道客户端的历史申请记录;所以当用户从客户端申请一次登录胜利后,再次进行申请时,会再次弹出登录对话框。

为了解决这个问题,于是,咱们把服务器中产生的会话sessionID存储到客户端浏览器cookie中去。在客户端同一个会话期间,不须要从新登录认证,浏览器敞开时,会话完结,cookie革除。这样便解决了客户端申请服务端会话不同步问题。

背景:web我的项目应用OTAP协定session认证形式

协定文档阐明:

服务器返回的受权SessionID通过HTTP头的Set-Cookie进行返回,同时设置HttpOnly,防止受权SessionID被偷盗的危险。因为同一个域上面不能设置KEY一样的两个Cookie,为了解决NVR虚构IP跳转IPC的问题,Cookie中SessionID的KEY必须是不同的,咱们定义命名规定为:"WebSession_"+SHA256(设施MAC地址+设施序列号)。这样,对于NVR连贯的不同IPC,其中MAC地址和设施序列号就应用IPC的,就能够做到SessionID的KEY不同。登陆时,客户端发送登陆申请后,设施回应受权SessionID如下所示:HTTP/1.1 200 OK……Set-Cookie:WebSession_dfwheefi12=d59eddce7053eb5e1a94fd8239b6f1a1d59eddce7053eb5e1a94fd8239b6f1a1;path=/;HttpOnlyCookie的expires字段不设置,防止设施因为未校时,导致Cookie永远过期。受权SessionID的过期工夫依附心跳机制。客户端登陆后,再发送申请时,在HTTP中的Cookie里带上受权SessionID:…Cookie:WebSession_dfwheefi12=7e91b638bbd1abbbce1effe1931cec97d59eddce7053eb5e1a94fd8239b6f1a1

概括为:这种session认证形式,由服务器端通过Set-Cookie:“WebSession_XXX”命令,向客户端发送cookie的响应,客户端接管到响应后,在本机客户端设置了一个WebSession_XXX的cookie信息;

当再次发送申请(申请URL与cookie的属性Domain和Path统一)时,cookie信息则会蕴含在HTTP申请的头部中,一起发送,实现认证(该cookie在浏览器会话完结时过期);

应用场景:别离通过http、https两种形式拜访同一设施时,会呈现cookie中websession信息互串景象,导致传输加解密失败

Cookie的次要属性:


在chrome控制台中的Application选项卡中能够看到cookie的信息,一个域名上面可能存在着很多个cookie对象。

Name属性为一个cookie的名称。
Value属性为一个cookie的值。
Domain属性为能够拜访此cookie的域名。
Path属性为能够拜访此cookie的页面门路。
Expires/Max-Age 属性为此cookie超时工夫。
Size属性此cookie大小。
Httponly属性 cookie的httponly属性。
Secure 属性设置是否只能通过https来传递此条cookie

Web我的项目开发中为保障http申请下能够拜访服务器,所以不设置secure 字段,即容许http、https来传递cookie;

产生websession互串的起因:

当用户http申请一个页面,并且通过登录认证后,此时服务器通过申请头设置cookie信息,在浏览器的cookies中会新增一条对于以后域名的cookie信息,cookie属性中Domain记录了服务器域名IP,即容许该域名服务器拜访与批改以后cookie;

在咱们另外申请雷同域名的https申请并登录认证后,此时,新的认证信息websession会从新写到浏览的cookies中的雷同域名下websession信息中,此时就会笼罩掉http申请时的认证信息;

图像化展现如下:

同理,先发送https申请,再发送http申请,前面一次的申请认证信息websession同样会对前一次的进行笼罩,导致websession互串;

在理论参加的我的项目中,传输加密局部,加密信息与认证信息进行了关联,所以在前一次的认证信息被笼罩后,尽管新的认证信息能够在前一个页面中,发送申请通过认证,然而因为传输加密信息与前一次的认证信息做了关联,与新的认证信息不匹配,所以会呈现传输加密失败的问题;

解决方案:解除加密信息与认证信息的关联

在剖析起因后,与设备组、协定组共事共同商定,决定将加密信息与认证信息关联解除,设施激活后,加密信息放弃不变,确保认证信息被笼罩时,不会影响加密性能,直到设施被重置,加密信息更新;