专栏首页Czy‘s BlogCookie与Session

Cookie与Session

Cookie与Session

会话跟踪是Web程序中常用的技术,HTTP协议是无状态的,确定用户身份就需要跟踪用户的整个会话。最常用的会话跟踪是使用CookieSession,简单来说Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

由于HTTP协议是无状态的,一旦数据交换完毕,此次链接就会关闭,再次交换数据就需要重新连接,意味着服务器无法从链接上跟踪会话。假如AB同时购买了一件商品,不进行会话跟踪的话服务器就无法判断究竟是谁购买了此商品。 服务端为进行会话跟踪,给每个客户端颁发一个通行证,每个人访问必须携带通行证,这样服务端就能区别用户身份了。 Cookie实际上是一小段的文本信息,服务端将需要通行证信息Cookie发送到浏览器,浏览器将通行证存储起来,并且对于同源的每个请求都会自动携带通行证信息(CSRF跨站请求伪造基于此策略),于是服务端就可以判断用户身份。

Session

Session是服务器端使用的一种记录客户端状态的机制,相应的也增加了服务器的存储压力。 对于客户端的每个会话,都有一个唯一的SESSIONID与其对应,服务端将用户数据存储进SESSIONID对应的文件或者是内存中,只要客户端每次请求将SESSIONID交予服务端,服务端就能区别用户进行会话跟踪。

实例

仅使用Cookie

仅使用cookie而不使用session进行用户身份跟踪,服务端将所有的用户数据信息告知浏览器,浏览器进行存储,每次请求将数据发送到服务端。此种方式理论上可行,但是相对并不安全,尤其是在用户数据信息未加密的情况下,若是被中间人攻击则用户的数据信息将全部被泄露,或者用户自身将浏览器数据进行修改进行请求伪造,伪造他人身份访问服务器等,此外不同浏览器对于同一域Cookie的大小(一般为4KB左右)与数量都有限制,将用户数据都存储于Cookie可能会有空间或数量不够的情况。

仅使用Seesion

仅使用session而不使用Cookie进行用户身份跟踪,由于使用Session在客户端仅需要一个SESSIONID传输到服务端就能进行会话跟踪,所以实现比较简单,可以通过对所有的URL后拼接一个SESSIONID或者对于每个表单设置一个隐藏的input用以存储SESSIONID进行提交,服务器就可以进行会话跟踪,由于数据是存储在服务端,相对比较安全,且存储量大小完全取决于服务端,可以较好控制。

结合使用

现在普遍使用的方式就是将COOKIESESSION结合使用,直接将SESSIONID存储于COOKIE中,浏览器自动将同源的COOKIE携带在请求头中,进行会话跟踪,这样既不需要在COOKIE中存储大量信息,也不需要对每次请求都需要操作附带SESSIONID。浏览请求头中Cookie字段的JSESSIONID=XXXXXXXXXXXXXXXXXXX就是Java默认的SESSIONIDPHPSESSID=XXXXXXXXXXXXXXXXXXXXXXXXXX就是PHP默认的SESSIONID

差异

存储位置

Cookie将数据存储在浏览器,Session则将数据存储在服务端

类型

Cookie是存储的String类型,Session在服务端则是Object类型

安全

Cookie在客户端用户可以进行修改伪造,Session在服务端用户无法进行直接的修改伪造

作用域

Cookie由于浏览器的同源策略,只有同源的情况下才会发送,Session在服务端理论上可以进行多域共享

存储大小

Cookie大小由浏览器限制,一般不超过4KBSession在服务端大小可以灵活控制

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GET和POST的区别

    超文本传输协议HTTP的设计目的是保证客户端与服务端之间的通信,HTTP协议的工作方式是客户端与服务端之间的请求响应,在客户端与服务端进行请求响应时最常用的两种...

    WindrunnerMax
  • Vue事件绑定原理

    Vue中通过v-on或其语法糖@指令来给元素绑定事件并且提供了事件修饰符,基本流程是进行模板编译生成AST,生成render函数后并执行得到VNode,VNod...

    WindrunnerMax
  • 供暖器

    冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在,给出位于一条水平线上的房...

    WindrunnerMax
  • 政府购买云服务降低行政成本

    过购买云服务,各级政府部门单位将不再单独购买设备建设独立的信息中心(资料片)。 近年来,随着云技术与相关产品的发展,购买云服务的集约化信息化系统方式,已逐渐成为...

    静一
  • JSP中的四种作用域

    JSP中的四种作用域包括page、request、session和application,具体来说:

    崔笑颜
  • Session

    类比:session相当于发会员卡,会员卡上只有卡号(sessionID)。下次去健身房的时候,只要看卡号上,就能确定你本人的去他信息。 而cookie相当于把...

    代码之风
  • asp.net Forms身份验证详解

      在做网站的时候,都会用到用户登录的功能。对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证。对于初学者,通常将用户登录信息存放在...

    thz
  • 【技术专栏】SDN与NFV渐行渐近

    根据市场调研公司Dell'Oro的数据,由于软件定义网络(SDN)及白盒交换机正在影响知名品牌供应商的销售,2014年第一季度全球以太网交换机市场减少了10亿美...

    SDNLAB
  • 黑客为何向CoinDash返还价值$2600万的以太坊?

    据了解,一名黑客已经向CoinDash归还了价值超过2620万美元的以太坊,这也是该公司从2017年7月份开始所筹到的融资金额。 ? 黑客将这笔钱分两次还给了C...

    FB客服
  • 手机变身曲面屏,又一装X技能学会了

    五一过完了登上公众号一看几百条信息,有些小伙伴要咨询问题,有些是骂我们说我们装X了,其实我们没有装X的意思,信息太多了真心回复不过来只能挑选些回复了,没回复的不...

    IT小侠公社

扫码关注云+社区

领取腾讯云代金券