面试必备-Cookie和Session

共同点

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

Cookie的工作原理

(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户

Session的工作原理

(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID,value为sessionId),然后将该Cookie发送至浏览器端
(2)浏览器端再次发送请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。
name为JSESSIONID的Cookie不存在(关闭或更换浏览器),返回1中重新去创建Session与特殊的Cookie
name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象
ID为sessionId的Session对象不存在(Session对象默认存活30分钟),返回1中重新去创建Session与特殊的Cookie
ID为sessionId的Session对象存在,则返回session对象

区别

cookie数据保存在客户端,session数据保存在服务端。

Session

如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面,安全性高。

cookie

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

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

区别总结

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

面试常问

1. Session产生的session_id放在Cookie里面,如果用户把Cookie禁止掉,是不是Session也不能用了呢?

禁止掉Cookie后,Session可以用,不过通过其他的方式来获得这个sessionid,比如,可以写入url中,或者以表单的形势提交到服务器端。从而使服务器端获取相应的用户数据。

2. 为什么说Session 比Cookie更安全?

攻破Session:
第一步:获取sessionId,sessionId是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。
第二步:获取有效sessionId,sessionId是加密的,第二次session_start的时候,前一次的sessionId就没有用了,Session过期时sessionId也会失效,想在短时间内攻破加了密的 sessionId很难。

攻破Cookie:
截获cookie变量,然后伪造一个数据包
入侵机器,将cookie拷走,就可伪造身份登录

3. Cookie和Session的区别?
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值