后端开发--基础概念:Session 与 Cookie 的比较(1)

Cookie、Session、Token、JWT与OAuth2:Web认证授权核心概念全解析 在Web开发中,认证与授权是保障应用安全的核心机制。其基本原理是解决HTTP无状态协议下的用户身份识别与权限管理问题。从技术实现上看,经典的Cookie-Session机制通过在客户端存储标识、服务端维护会话状态来实现有状态认证;而基于Token的无状态认证,则将用户信息编码在令牌中,由客户端存储并在请求时携带,服务器通过验证签名即可识别身份,这显著提升了分布式系统的扩展性。JWT作为Token的一种流行标准,采用结构化格式(Header.Payload.Signature)实现信息自包含与防篡改,广泛应用 阅读详情

日期:2017/11/21

Session 与 Cookie 的比较区别

      一、原因

      HTTP协议是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,所以服务端需要记录用户的状态时,就需要用某种机制 来 识别 具体的用户。而这种机制,一般是Session 或者 Cookie。


     二、Session 是什么。

     session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID 来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6之类的字符串。

     大家请看在HTTP请求报文头的最后一行有cookie,不过是JSessionID的cookie值。

     Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23BE13C4C,比如前两个值,应该属于偏好设置之类的。


     服务端是怎么知道客户端的多个请求是隶属于一个Session呢?注意到后台的那个jsessionid=5F4771183629C9834F8382E23BE13C4C木有?原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后面哦)。

    在一些web开发的书中,往往只是简单的把Session和cookie作为两种并列的http传送信息的方式,session cookies位于服务器端,persistent cookie位于客户端,可是session又是以cookie为基础的,明白的两者之间的联系和区别,我们就不难选择合适的技术来开发web service了。




    三、Cookie 是什么。

     浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。

     为了弥补这个缺陷,Netscape开发出了cookie这个有效的工具来保存某个用户的识别信息,因此人们昵称为“小甜饼”。cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段:Netscape Navigator使用一个名为cookies.txt本地文件保存从所有站点接收的Cookie信息;而IE浏览器把Cookie信息保存在类似于C:\windows\cookies的目录下。当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。

    典型应用:

      (一):判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。

      (二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。



     四、cookie与session的区别:


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

     简单的说,当你登录一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上面,客户端每次请求服务器的时候会发送 当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录,或具有某种权限。由于数据是存储在服务器 上面,所以你不能伪造,但是如果你能够获取某个登录用户的sessionid,用特殊的浏览器伪造该用户的请求也是能够成功的。sessionid是服务 器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性,我曾经就遇到过一次。登录某个网站,开始显示的 是自己的信息,等一段时间超时了,一刷新,居然显示了别人的信息。

     如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。服 务器会解释为 cookie变量。所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。如果你能够截获某个用户的 cookie变量,然后伪造一个数据包发送过去,那么服务器还是认为你是合法的。所以,使用 cookie被攻击的可能性比较大。如果设置了的有效时间,那么它会将 cookie保存在客户端的硬盘上,下次再访问该网站的时候,浏览器先检查有没有 cookie,如果有的话,就读取该 cookie,然后发送给服务器。如果你在机器上面保存了某个论坛 cookie,有效期是一年,如果有人入侵你的机器,将你的 cookie拷走,然后放在他的浏览器的目录下面,那么他登录该网站的时候就是用你的的身份登录的。所以 cookie是可以伪造的。当然,伪造的时候需要主意,直接copy cookie文件到 cookie目录,浏览器是不认的,他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器,曾经在学校的vbb论坛上面做过试验,copy别人的 cookie登录,冒用了别人的名义发帖子,完全没有问题。

     Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一      SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。

     但是,服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。

     可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。


     五、PS

     Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个cookie的文本文件中;                       而“Session”则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为cookie是不可靠的,session是可靠地,但是目前很多著名的站点也都以来cookie。有时候为了解决禁用cookie后的页面处理,通常采用url重写技术,调用session中大量有用的方法从session中获取数据后置入页面。
    Cookies 的安全性能一直是倍受争议的。虽然Cookies是保存在本机上的,但是其信息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题。所以Cookies到底该不该用,到底该怎样用,就有了一个需要给定的底线。





Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0) 本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。 阅读详情

相关推荐

【CubeMX】STM32G474 HRTIM 互补PWM与死区时间配置实战

本文详细介绍了如何使用STM32CubeMX配置STM32G474的高分辨率定时器HRTIM生成互补PWM波形并精确设置死区时间。通过实战步骤讲解时钟配置、死区计算与高级功能,帮助工程师在电机驱动和电源应用中实现精准控制,避免上下桥臂直通风险。

grpc6streamer的博客 727

你还在纠结cookies和session的区别嘛?

1、数据存放位置不同: cookie数据存放在客户的浏览器上,session数据放在服务器上。 2、安全程度不同: cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。 3、性能使用程度不同: session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。 4、数据...

HifunのZone 3314

802.11ax 的OFDMA资源分配详解

802.11ax 引入的最重要的技术就是OFDMA。OFDMA中引入了RU(资源块)概念,也就是20Mhz/40Mhz/80Mhz/160Mhz的带宽可以切割成不同尺寸的RU,分配给不同的用户使用,这样就大大提高了频谱资源的利用率。 常见的RU尺寸有26/52/102/242/484/996,单位是子载波,每个子载波是78.125Khz,这样20Mhz的带宽可以划分为如下图所示的不同RU大小。 按照11ax规范的要求,上下行的数据传输都可以由AP来统一调度,这样上下行的OFDM...

weixin_43408952的博客 1万+

session和cookie的区别

1,session 在服务器端,cookie 在客户端(浏览器) 2,session 默认被存在在服务器的一个文件里(不是内存) 3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id) 4,s...

weixin_30258027的博客 270

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM)

PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。

百态·数智思维 | 聚焦大数据、量化与未来AI 841

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 390

详解cookie、session、token关于前后端的那些事(强烈推荐)

http协议是无状态协议,请求之间是没有联系的,cookie、session、token可以帮助服务器区分到底是谁在访问

Army-海军的博客 1万+

服务器被矿工入侵记录

一次服务器被矿工入驻的处理记录

王瑞的技术专栏 1332

前后端分离---前后端身份验证(session和jwt)

一.web开发模式 目前主流的Web开发模式有两种,分别是: ①基于服务端渲染的传统Web开发模式 ②基于前后端分离的新型Web开发模式 1.服务器端渲染的Web开发模式 服务端渲染的概念:服务器发送给客户端的HTML页面,是在服务器通过字符串的拼接,动态生成的。因此,客户端不需要使用Ajax这样的技术额外请求页面的数据。代码示例如下: 2.服务器端渲染的优缺点 ①优点: 前端耗时少。因为服务器端负责动态生成HTML内容,浏览器只需要直接渲染页面即可。尤其是移动端,更省电。 有利于

前端与计算机相关知识的分享,博主的qq523235674 8991

使用python排八字 计算八字的相合相冲五行分值等 ...

简介 八字术是一种古老的算命术。它运用阴阳、五行、干支、八卦等理论,把人的出生年月日时转化为八个字,进而推算人的富贵贫贱、祸福吉凶、穷通寿天、名利地位、家庭六亲等方面的情况 八字源自古代的中国,是一种利用天干和地支来准确记录年、月、日、时的方式,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成(共八个字),年、月、日、时...

weixin_33717298的博客 5310

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

在现代 JavaScript 开发中,模块化是提升代码组织性和可维护性的关键。本文深入解析三种主流的模块化规范——CommonJS、AMD 和 ES6 Module。

Allen- 3479

后端开发基础与实践教程

后端开发主要关注服务器端的编程和相关操作。它涉及到处理用户请求、执行数据库操作、实现业务逻辑以及确保应用程序的安全性和稳定性。与前端开发侧重于用户界面的设计和交互不同,后端开发更侧重于数据处理和系统的内部运作。例如,在一个电子商务网站中,后端负责管理用户账户信息、处理订单、更新库存以及与支付系统进行交互等任务。后端开发是一个广阔而深入的领域,需要不断学习和实践。通过掌握编程语言基础、数据存储与管理、后端框架以及部署运维等知识和技能,初学者可以逐步构建出功能强大、稳定可靠的后端系统。

weixin_45633412的博客 1480

【AI智能体】Codex 生成高质量电商套图实战操作详解

Codex 生成高质量电商套图实战操作详解

congge 4519

Django基础cookie和session

cookie是浏览器的技术,cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。

2401_88752464的博客 1498

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Cookie与Session】无状态 HTTP 如何“记住“你?——从 Cookie 协议到分布式 Session

本文将从 Cookie 的协议定义出发,用 C++ 代码验证其写入、过期和路径隔离行为,再引出 Session 的设计动机和实现原理,最后给出生产环境中 Cookie 与 Session 的选型建议。读完本文,你将能用 C++ 亲手实现一个带登录态管理的最小 Web 后端,彻底理解"无状态 HTTP 上的有状态会话"这一看似矛盾却精妙的设计。

2302_80243065的博客 1642

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【SpringMVC】——Cookie和Session机制

获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute

阿华的博客 1985

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())

这是没有Spring的时候,用Servlet来获取(获取所有的 Cookie)Spring MVCWebServletHTTPHTTPHTTPHTTPSpringCookie是一个数组,所以进行循环打印进入网页后,Cookie可以直接进行修改(F12然后在里面添加信息,name=bitevalue=666,随后保存之后刷新,可在服务端看到Cookie信息Spring MVCWebServletServletSpring MVCHTTPHTTPHTTPSpring MVC。

Yeeear的博客 3064

Cookie 和 Session

本文主要讲解了 Cookie 和 Session 相关内容

2401_87046050的博客 1165

Cookie与Session 详解:搞懂HTTP 身份认证

HTTP协议的无状态特性催生了Cookie与Session这对"黄金搭档"。Cookie是客户端存储的身份标识(如SessionID),通过请求头自动传递;Session是服务端的用户数据仓库,存储敏感信息。二者协作流程:服务端生成SessionID并写入Cookie→客户端保存Cookie→后续请求自动携带→服务端验证Session。安全性上,Session更优(敏感数据存服务端,客户端仅传无意义ID),但需配合HttpOnly/Secure等Cookie属性防护XSS/CSRF攻击。

2501_91229396的博客 1166

4 后端开发基础-Cookie & Session

Cookie & Session 一 会话概述 1.1 什么是会话? 日常生活中:从拨通电话到挂断电话之间的一连串你问我答的过程就是一个会话。 B/S架构中:从浏览器第一次给服务器发送请求时,建立会话;直到有一方断开,会话结束。 一次会话:包含多次请求响应。 1.2 会话技术 问题:Http是一个无状态协议,同一个会话的连续两个请求相互独立,彼此并不了解 作用:用于存储浏览器与服务器在请求和响应过程中产生的数据 客户端会话技术:cookie 服务器端会话技术:session 二 Cookie【重

weixin_42749734的博客 349

Java基础 -> cookie,session

cookie就相当于一个学生证,每个客户端都会拿到服务器给客户端的一个证明 客户端用这个证明去与服务器连接 每次连接,都会获取一个新的cookie给客户端 浏览器关闭后就会删除掉cookie,相当于一个浏览器的缓存 @RequestMapping("/gethello") public void test1(HttpServletRequest req, HttpServletResponse resp) throws IOException { //获取C

rod0320的博客 131

Cookie和Session的相关概念

Session和Cookie的相关知识点和java示例

Dragon_qing的博客 385

Tomcat深入浅出——Session与Cookie

Cookie:有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息Cookie原理:当客户端去访问使用了cookie的服务器时,服务器会生成一份cookie发送到客户端,客户端会把这个数据保存起来,然后这样下次使用时,服务器就可以通过cookie知道是哪个客户端了。 此方法用来设置cookie时间 设置访问路径-浏览器访问这个路径,一定要带cookie才行 设置coo

JavaShark的博客 858

django之cookie和session理解及使用

我们现在来说一个例子。当你要访问某个网站时,发现无法访问,并且它可能会直接跳转到登录页面让你先登录。OK,那就先登录,登录之后,就可以访问该网站的任意链接。但是http不是无连接的吗,每次请求一个网页都是一次全新的请求,那么服务器为什么就能知道你是谁了呢?肯定是你身上有某个标记,并且它能看懂这个标记对吧。 这就涉及到cookie和session。 一.Cookie 在你登录或者注册之后,服务...

乙壳虫的博客 2746

【后端开发】Spring MVC-常见使用、Cookie、Session

RestController:该注解用于标记一个类作为RESTful Web 服务的控制器@RequestMapping(“/request”):该注解用于将 HTTP 请求映射到对应的控制器方法上,将特定的 URL 路径(如 “/request”)映射到控制器类或方法。url路径前加上"/"建议类路径与方法路径一起使用RequestMapping即支持get请求,也支持post请求,默认是get请求@RestController//标记一个类作为RESTful Web 服务的控制器。

m0_50534425的博客 1307

【SpringBoot】30 Cookie、Session、Token

Cookie 是 Http 状态保持在客户端的会话技术,是一段可以用来标识用户身份的数据,由服务端生成发送给客户端,以文本的形式保存在客户端,客户端每次向服务端发送请求时都需要携带该 Cookie,使服务端能够识别这些请求都是来自同一客户端,从而使这些请求之间可以数据共享。1)客户端:用户首次登录(如使用账号密码),发送登录请求2)服务端:接收登录请求,校验登录信息,校验通过返回 Cookie,校验失败返回登录错误信息3)客户端:登录成功,之后每次发送请求都携带该 Cookie,

寻道书生的博客 1392
上一篇: Java(32):哈希表 的原理和应用
下一篇: 后端开发--基础概念:Session 与 Cookie 的比较(2)
后台技术汇
博客等级 码龄11年 670粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后台技术汇

对你的帮助,是对我的最好鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值