面试题:理解session与cookie的本质

【推荐阅读】微服务还能火多久?>>> hot3.png

  • 目录
  • 1.前言
  • 2.出现缘由
  • 3.本质区别
  • 3.1存储位置及存储大小
  • 3.2存储时间问题
  • 3.3安全性
  • 4.总结

1.前言

作为web开发者,我们经常会使用到session和cookie,而且在面试的时候,面试官也会提到这两者的区别是什么?使用了那么多次,我希望从使用到本质,探讨一下它们的情况。

2.出现缘由

我们来思考这样一个场景,如果在网页开发中,有个变量我们需要长时间使用,可能在下次登录到这个页面的时候还能使用,那么它们的价值就体现出来了,他们能够保存我们所需要的数据而不需要经常性调用数据库去获取。

3.本质区别

3.1存储位置及存储大小

cookie以文本格式存储在浏览器上,存储量有限只允许4KBsession会话存储在服务端,可以无限量存储多个变量所以session比cookie更安全

3.2存储时间问题

session在网站关闭后就表示会话结束,因此无法做到长时间保存;而cookie保存在浏览器上,可以做到长时间的保存。

PS:但是需要注意的是,用户能够在浏览器上禁用和编辑cookie,因此一定不要将敏感信息存放,以防泄露;当cookie被浏览器禁用,可以通过URL参数形式传递cookie。

3.3安全性

除了3.2小节中谈到的用户可对cookie编辑和禁用外,还用一点就是session在与客户端连接时会生成对应的session-id,而cookie则没有,但是客户端获取Session需要通过Cookie传递SessionId,所以Cookie就是客户端与Session的中间桥梁。

4.总结

Cookie

  • 数据存储在浏览器端,文本形式,存储量最大4KB
  • 特点:方便与javascript交换数据,方便获取用户信息
  • 风险:浏览器可能会禁用cookie
  • 替换方案:URL参数

Session

  • 数据存储在服务器上,无限量存储多个变量
  • 特点:高效安全,不依赖浏览器环境,服务端为每个用户通过sessionID标识

你可能感兴趣的:(面试题:理解session与cookie的本质)