session:

Session是另一种记录客户状态的机制,基于Cookie实现,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session,客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了

cookie:

Cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时自动发送该Cookie给服务器Cookie可以用来在某个WEB站点会话间持久的保持状态

区别:

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用cookie
所以:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在cookie中
————————————————

一、共同之处:

cookie和session都是用来跟踪浏览器用户身份的会话方式。

二、工作原理:

1.Cookie的工作原理
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户20190917204655188.png
2.Session的工作原理
(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。
name为JSESSIONID的Cookie不存在(关闭或更换浏览器),返回1中重新去创建Session与特殊的Cookie
name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象
value为SessionId不存在(Session对象默认存活30分钟),返回1中重新去创建Session与特殊的Cookie
value为SessionId存在,返回session对象
Session的工作原理图2019091720521815.png2019091720523621.png
三、区别:
cookie数据保存在客户端,session数据保存在服务端。
session
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,所以你不能伪造。

cookie
sessionid是服务器和客户端连接时候随机分配的,如果浏览器使用的是cookie,那么所有数据都保存在浏览器端,比如你登陆以后,服务器设置了cookie用户名,那么当你再次请求服务器的时候,浏览器会将用户名一块发送给服务器,这些变量有一定的特殊标记。服务器会解释为cookie变量,所以只要不关闭浏览器,那么cookie变量一直是有效的,所以能够保证长时间不掉线。

如果你能够截获某个用户的cookie变量,然后伪造一个数据包发送过去,那么服务器还是 认为你是合法的。所以,使用cookie被攻击的可能性比较大。

如果cookie设置了有效值,那么cookie会保存到客户端的硬盘上,下次在访问网站的时候,浏览器先检查有没有cookie,如果有的话,读取cookie,然后发送给服务器。

所以你在机器上面保存了某个论坛cookie,有效期是一年,如果有人入侵你的机器,将你的cookie拷走,放在他机器下面,那么他登陆该网站的时候就是用你的身份登陆的。当然,伪造的时候需要注意,直接copy cookie文件到 cookie目录,浏览器是不认的,他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器

两个都可以用来存私密的东西,session过期与否,取决于服务器的设定。cookie过期与否,可以在cookie生成的时候设置进去。

四、区别对比:
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

————————————————

1.cookie与session的区别(面试必备)
存放位置不同
cookie保存在客户端,
session保存在服务端

存取方式不同
cookie只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。
session中能够存取任何类型的数据

安全性不同
cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修改cookie中的内容。
session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。

2.cookie简介
HTTP是一个基于请求与响应,无状态的,应用层协议。
无状态:服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。
Cookie:网站为了辨别用户身份,存储在用户本地终端上的数据,Cookie是由服务端生成的,发送给客户端(通常是浏览器)的。
Cookie总是保存在客户端中,按在客户端中存储位置,可分为内存Cookie和硬盘Cookie。
内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其才能在时间是长期的。

3.Cookie的作用
Cookie的根本作用就是在客户端存储用户访问网站的一些信息。
1.记住密码,下次自动登录。
2.购物车功能。
3.记录用户浏览数据,进行商品(广告)推荐。

Cookie的缺陷:
1.Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
2.由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
3.Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。

Cookie的工作原理
1.创建Cookie
用户浏览网站,网站服务器生成唯一识别码(cookie id),默认一般是会话级别的cookie,存储在浏览器内存中,将cookie放入到http响应报头,将cookie插入到一个Set-Cookie HTTP响应报头中。
2.设置存储cookie
浏览器收到该响应报文后,根据报文里的Set-Cookie特殊的指示,生成相应的Cookie,保存在客户端。该Cookie里面记录这用户当前的信息。
3.发送cookie
用户再次访问网站时,浏览器首先检查所有存储的Cookies,如果存在某个网站的Cookie,则把该Cookie附加在请求资源的HTTP请求头上发送给服务器。
4.读取cookie
服务器接收到用户的HTTP请求报文之后,从报文头获取到该用户的Cookie,从里面找到所需要的东西。

Session简介
Session代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以是时断时续的。Session是一种服务器端的机制,Session对象用来存储特定用户会话所需的信息。
Session由服务端生成,保存在服器的内存、缓存、硬盘或数据库中。

Session作用
Session的根本作用是在服务端存储用户和服务器会话的一些信息。
1.判断用户是否登录
2.购物车功能

Session的工作原理
当用户访问到一个服务器,如果服务器启用Session,服务器就要为该用户创建一个Session,并非生成一个于此Session相关的Session,这个Session ID 是唯一的、不重复的字符串,这个Session将被在本次响应中返回到客户端保存,而保存这个Session ID的正是Cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。