Cooike和Session是什么
Cookie定义
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可以从该浏览器读回此信息。这是很有用的,这让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie是个存储在浏览器目录的本地文件,当浏览器运行时,存储在RAM中。一旦能从该网站或网络服务器退出,Cookie也可以存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有Cookie。
为什么要使用Cookie?
首先我们要知道一个概念,web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据增大。另一方面,在服务器不需要先前信息时它的应答就较快。
Cookie什么时候产生?
Cookie的使用--先要看需求。因为浏览器可以禁用Cookie,同时服务端也可以不Set-Cookie。
客户端向服务端发送一个请求时,服务端向客户端发送一个Cookie然后浏览器将Cookie保存,Cookie有两种保存方式,一种是浏览器会将Cookie保存在内存中,还有一种是保存在客户端的硬盘中,之后每次HTTP请求都会将Cookie发送给服务器端。
具体流程如下:
1. 客户端提交一个HTTP请求给服务端
2. 服务端这个时候做了两件事,一个是Set-Cookie,还有一个是提交响应内容给客户端,客户端再次向服务器请求时会在请求头中携带一个Cookie
3. 服务端提交响应内容给客户端
4. 举例:分登陆之前和登陆后,登陆前服务端给浏览器一个Cookie,但是这个Cookie里面没有用户信息,但是登录成功之后,服务端给浏览器一个Cookie,这个时候的Cookie已经记录了用户的信息,在系统内任意访问,可以实现免登录。
Cookie生存周期?
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就可以马上清除Cookie,不会记录用户信息,更加安全。
Cookie有哪些缺陷?
1、数量受到限制。一个浏览器能创建的Cookie数量最多为300个,并且每个不能超过4kb,每个web站点能设置的Cookie总数不超过20个。
2、安全性无法得到保障。通常跨站点脚本攻击往往利用网站漏洞在网站中植入脚本代码或网站页面引用第三方脚本代码,均存在跨站点脚本的攻击,在受到跨站点脚本攻击时,脚本指令将会读取到当前站点的所有Cookie内容(已不存在Cookie作用域限制),然后通过某种方式将Cookie内容提交到指定的服务器(如:AJAX)。一旦Cookie落入攻击者手中,它将会重现其价值。
3、浏览器可以禁用Cookie。禁用Cookie后,也就无法享有Cookie带来的方便。
什么时Session?Session什么时候产生?
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的web页之间跳转时,存储Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的web页时,如果该用户还没有会话,则web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。
为什么要使用Session?
因为很多第三方可以获取到这个Cookie,服务器无法判断Cookie是不是真实用户发送的,所以Cookie可以伪造,伪造Cookie实现登录进行一些HTTP请求。如果从安全性上来讲,Session比Cookie安全性稍微高一些,我们先要知道一个概念--SessionID。SessionID是什么?客户端第一次请求服务器的时候,服务器会为客户端创建一个Session,并将通过特殊算法算出一个Session的ID,下次请求资源时(Session未过期),浏览器会将SessionID(实质是Cookie)放置到请求头中,服务器收到请求后就得到该请求的SessionID,服务器找到该ID的Session返还给请求者使用。
Session的生命周期?
根据需求设定,一般来说,半个小时。举个例子,你登陆一个服务器,服务器返回给你一个SessionID,登陆成功之后的半个小时之内没有对该服务器进行任何HTTP请求,半小时后你进行一次HTTP请求,会提示你重新登陆。
Session有哪些缺陷?
因为Session是存储在服务器当中的,所以Session过多,会对服务器产生压力。在我看来,Session的生命周期算是减少服务器压力的一种方式。
Cookie和Session之间有那些优缺点?
1、Cookie可以存储在浏览器或者本地,Session只能存在服务器
2、Session比Cookie更具有安全性
3、Session占用服务器性能,Session过多,增加服务器压力
4、单个Cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个Cookie