cookie与HttpSession

背景

地点:长沙飞思

时间:2023/10/31~11/06

内容:cookie与HttpSession

前言

cookie与HttpSession是javaweb中不可或缺的一环,与其有关的技术名为会话跟踪技术,跟踪用户状态,在同一个用户同一个浏览器一段时间, 多次请求内之间的数据进行传递, 数据能够共享。

  • 会话/对话: 客户端与服务器的会话, 从客户端使用浏览器第一次访问服务器, 表示会话的开始。

  • 中间过程:经过N次请求, 当用户关闭浏览器,表示这一次的会话结束。

实现就是cookie与HttpSession。

Cookie

定义

Cookie,有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或者永久保存的信息

原理

        创建于服务器, 保存于客户端浏览器, 不能跨浏览器, 以key/value形式存储数据,服务器通过响应对象把Cookie保存到客户端浏览器上,Cookie在请求的时候, 在请求头中包含Cookie, 传递给服务器。

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

存活周期

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

Cookie默认最大存活时候: -1 表示这个Cookie存活时间是会话级别, 关闭浏览器的时候, 该Cookie删除

设置:

  • setMaxAge(int): 单位: 秒, 一旦指定时间,浏览器立即删除该Cookie

  • setMaxAge(0): 立即删除Cookie

缺点

(1)数量受到限制。一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的Cookie 总数不能超过 20 个
(2)安全性无法得到保障。通常跨站点脚本攻击往往利用网站漏洞在网站页面中植入脚本代码或网站页面引用第三方法脚本代码,均存在跨站点脚本攻击的可能,在受到跨站点脚本攻击时,脚本指令将会读取当前站点的所有Cookie 内容(已不存在 Cookie 作用域限制),然后通过某种方式将 Cookie 内容提交到指定的服务器(如:AJAX)。一旦 Cookie 落入攻击者手中,它将会重现其价值。
(3)浏览器可以禁用Cookie,禁用Cookie后,也就无法享有Cookie带来的方便。

HttpSession

定义

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。

原理

        创建于服务器, 保存于服务器, 底层依赖于cookie

(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。

区别

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

总结

钱塘江上潮信来,今日方知我是我

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值