面试加强(Session&&Cookie)

Session&&Cookie:

一:原理:

Session是一种服务器端的信息管理机制。

是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session。因为Cookie在关闭浏览器后会消失,但是原理服务器的Session还在,只有等到销毁的数据才会自动销毁。

Cookie是一种客户端的会话状态的一种储存机制。    

二:区别:

1:俩者都是会话技术

但是Session将数据保存在服务器端,Cookie将数据保存在客户端。

2:Cookie有大小限制以及浏览器在存Cookie的个数也有限制,Session没有大小限制

但是因为在服务器端,所以和服务器的内存大小有关联。

3:Cookie有安全隐患,通过拦截本地文件可以找到你的Cookie后进行攻击。

4:Session是保存在服务器端上,会存在一段时间才会消失,但是会增加服务器的压力。

5:生命周期:

Cookie的生命周期是累计的,从创建开始就开始计时,到一定时间,Cookie生命周期结束;

Session 的生命周期是间隔的,从创建时,在一定时间内未访问,Session生命周期被销毁,但是,在这个时间内,访问过,就会重新计算Session的生命周期。关机会造成Session生命周期结束,但是对Cookie没有影响。

6访问范围:

Cookie为多个用户浏览器共享;Session为一个用户浏览器独享。

三:面试:

1:Session 产生的Session_ID放在Cookie中,如果用户把Cookie禁止掉,Session是否能够使用?

禁止Cookie后,Session依然可以使用,可以通过其他方式来获取Session_ID。

比如:

可以放置在URL的后面

以表单形势提交到服务器端,从而是服务器端了解客户端的状态。

2:Session为什么比Cookie更安全。

Session_ID是加密的,第二次session_start的时候,前一次的sessionID就没有用了。Session过期时,session_ID也会失效。所以短时间内破解加密的sessionID很难,因为session是针对某一次通信的,一旦会话结束,session也就随着会话结束而消失,而cookie可以通过拦截本地文件找到你的cookie,然后进行攻击,安全性差。

3:关闭session:

1:关闭Tomcat/服务器 

2:重启web应用

3:session过期(默认30min)(可以在工程的web-xml文件中进行配置)

4:手动session.invalidate()

5:session的生命周期:

创建:第一次执行Request.getSession时创建

(客户端访问服务器端,执行到该方法,会看有没有属于该客户端的session区域,有,不创建,没有,创建新的)

销毁:服务器关闭、Session过期、手动销毁

猜你喜欢

转载自blog.csdn.net/qq_31051117/article/details/88105729