Cookie vs Session:Web开发中的身份验证之争

这篇具有很好参考价值的文章主要介绍了Cookie vs Session:Web开发中的身份验证之争。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



前言

本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!

一、概述

当涉及到Web开发和用户身份验证时,Cookie和Session是两个常见的概念。它们在存储和管理用户状态方面起着重要作用。、

二、Cookie和Session的区别与联系

Cookie和Session是Web开发中常用的机制,用于存储和管理用户的身份验证和状态信息。它们之间的主要区别如下:

  1. 存储位置:

    • Cookie:Cookie是存储在用户的浏览器中的小段数据。每个Cookie都有一个名称和值,并且由服务器发送给浏览器,在用户的每个请求中被浏览器自动包含在HTTP头中。
    • Session:Session是存储在服务器端的数据结构。服务器为每个用户创建一个唯一的会话,并将会话ID存储在Cookie中或通过URL参数传递给客户端。会话数据存储在服务器的内存或持久化存储中。
  2. 存储容量:

    • Cookie:每个域名下的Cookie数量和总大小都是有限制的。通常,每个域名最多可以存储几十个Cookie,每个Cookie的大小不能超过几KB。
    • Session:在服务器端存储Session数据的容量通常较大,可以存储更多的信息,受服务器资源和配置的限制。
  3. 安全性:

    • Cookie:Cookie可以设置安全标志(secure flag)和HTTP-only标志(HTTP-only flag)来增加安全性。安全标志可以确保Cookie仅在使用加密协议(如HTTPS)时传输,而HTTP-only标志可以防止JavaScript访问Cookie,从而减少跨站点脚本攻击(XSS)的风险。
    • Session:由于Session数据存储在服务器端,相对于Cookie,Session更难受到客户端篡改和攻击。
  4. 时效性:

    • Cookie:Cookie可以设置一个过期时间,在此之前浏览器会持续保存它,并在用户下次访问网站时发送回服务器。可以创建持久性Cookie(有过期时间)和会话Cookie(在用户关闭浏览器后过期)。
    • Session:Session可以有一个过期时间,或者在用户关闭浏览器时自动销毁。会话Cookie通常用于存储会话ID,而不是实际的会话数据。
  5. 跨设备支持:

    • Cookie:Cookie存储在用户的浏览器中,因此可以在不同设备上使用同一浏览器时共享。可以通过在浏览器中同步Cookie来实现跨设备的状态共享。
    • Session:Session数据存储在服务器端,与设备无关。无论用户使用哪个设备访问网站,服务器都可以通过会话ID来检索和管理用户的会话数据。

需要注意的是,Cookie和Session通常一起使用,通过Cookie中的唯一标识符来关联和管理服务器端的Session数据。Cookie提供了一种持久性存储和跨设备共享的方式,而Session提供了在服务器端存储和管理用户状态的机制。理解Cookie和Session的区别对于开发安全和可靠的Web应用程序至关重要。

三、登陆案例讲解

1、以登录案例讲解Cookie的使用过程

  1. 首先用户在客户端浏览器向服务器首次发起登陆请求
  2. 登陆成功后,服务端会把登陆的用户信息设置在cookie中(即set-cookie),并将cookie返回给客户端浏览器
  3. 客户端浏览器接收到 cookie 请求后,会把 cookie 保存到本地(可能是内存,也可能是磁盘,看具体使用情况而定)
  4. 以后再次访问该 web 应用时,客户端浏览器就会把本地的 cookie 带上,这样服务端就能根据 cookie 获得用户信息了

弊端:服务端把用户信息(用户名、用户密码)设置在cookie里返回给客户端,让客户端自己保存,也就是用户可以在客户端看到自己的密码。如果你的电脑被盗了,别人也可以在cookie里看到你的用户名和密码,这存在着极大的信息泄露安全风险!!
因此,引进了session登录

2、以登陆案例讲解 Session 的使用过程

  1. 首先用户在客户端浏览器发起登陆请求。
  2. 登陆成功后,服务端会把用户信息保存在服务端,并返回一个唯一的 session 标识(即sessionID)通过设置在cookie里返回给客户端浏览器
  3. 客户端浏览器会把这个唯一的session 标识保存在起来
  4. 以后再次访问 web 应用时,客户端浏览器会把这个唯一的 session 标识带上,这样服务端就能根据这个唯一标识找到用户信息。

看到这里可能会引起疑问:把唯一的 session 标识返回给客户端浏览器,然后保存起来,以后访问时带上,这难道不是 cookie 吗?

没错,session 只是一种会话机制,在许多 web 应用中,session 机制就是通过 cookie 来实现的。也就是说它只是使用(利用)了cookie 的功能,并不是使用 cookie完成会话保存。与 cookie 在保存客户端保存会话的机制相反,session 通过cookie的功能把会话信息保存到了服务端。

四、总结

举个小例子说明Cookie和Session之间的区别和联系
假如一个咖啡店有喝五杯赠一杯咖啡的优惠,但是一次性消费5杯咖啡的客人很少,这时就需要某种方式来记录某位顾客的消费数量。无外乎下面的几种方案文章来源地址https://www.toymoban.com/news/detail-627868.html

  1. 该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。但是http协议本身是无状态的。
  2. 发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态,也就是cookie,顾客就相当于浏览器,也就是Cookie登录。
  3. 发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的记录本上找到这个卡号对应的记录添加一些消费信息。这种做法就是在服务器端保持状态,也就是Session登录。

到了这里,关于Cookie vs Session:Web开发中的身份验证之争的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4.php开发-个人博客项目&登录验证&cookie&session&验证码安全

    目录 4.php开发-个人博客项目登录验证cookiesession验证码安全 知识点 本节大纲思路 ——这里以我自己的为例—— cookie验证—————— login1.php-登录后台界面 login_check.php-检查,作为包含文件 add_news.php-后台界面 php编码 如何创建 Cookie?--setcookie() 语法 实例 1 php header跳转 演示

    2024年01月23日
    浏览(44)
  • 4.php开发-个人博客项目&登录验证&cookie&session&验证码安全​

    目录 知识点 本节大纲思路 ——这里以我自己的为例—— cookie验证—————— login1.php-登录后台界面 login_check.php-检查,作为包含文件 add_news.php-后台界面 php编码 如何创建 Cookie?--setcookie() 语法 实例 1 php header跳转 演示案例-cookie验证脆弱问题 session验证—————— sess

    2024年01月25日
    浏览(44)
  • 小迪安全 第15天:php开发-个人博客项目&登录验证&cookie&session&验证码安全

    1.后台验证-登录用户逻辑安全-怎么去判定用户登陆成功 2.后台验证-COOKIESESSION 3.后台验证-验证码·万能密码等 思路: 1.发送登录请求 账号 密码 2.接收账号密码 3.判断账号密码的准确性 正确 成功登陆-跳转成功页面 错误 失败登录-重新登陆 后台管理系统有多个文件页面,为了

    2024年04月15日
    浏览(72)
  • 【Node.js】身份认证,Cookie和Session的认证机制,express中使用session认证和JWT认证

    Web开发模式 基于服务器渲染的传统web开发模式 服务端渲染的概念,服务器发送给客户端的HTNL页面,是在服务器通过字符串的拼接,动态生成的,因此,客户端不需要Ajax这样的技术额外请求页面的数据 优点: 前端耗时少,有利于seo(就是爬虫更容易爬取获得信息,更有利于

    2023年04月11日
    浏览(47)
  • Java开发 微软OAuth身份验证在EWS中的应用

    一、使用说明 看到有朋友在评论区咨询Java通过Oauth2.0调用EWS的实现。所以有了这篇文章,大概思路是使用Azure的客户端账号和密码通过http方式获取到Token信息,再通过Token去初始化ExchangeService实例,再通过各项API完成各种功能的调用。 二、HTTP方式获取Ews的Token信息 配置文件

    2024年02月16日
    浏览(54)
  • Asp.Net Core 6 Cookie 的身份验证策略

    参考文献: http://www.js-code.com/xindejiqiao/xindejiqiao_274882.html https://www.cnblogs.com/xiaoxiaotank/p/15811749.html 编写代码过程中不理解的代码可参考上面的文献 首先需要配置你的Program.cs,代码如下: 然后开启中间件  创建一个AuthenticationMiddleware.cs类 在写登录的地方去使用  最后给你的控制

    2024年02月16日
    浏览(39)
  • Node.js | 详解 Cookie-Session登录验证 的工作原理

    🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 🖥️ 本系列专栏:Node.js从入门到精通 👉 你的一键三连是我更新的最大动力❤️! 📢 欢迎私信博主加入前端交流群🌹 目前绝大多数的系统都少不了 登录验证 的功能,这主要是为了保存用户的状态,以此来限制用户的各种行

    2024年01月17日
    浏览(36)
  • Web会话跟踪:Cookie与Session

    在Web应用中,同一个浏览器与Web服务器的一次一系列的各种交互活动称为 会话 。而Web应用往往需要对用户进行会话跟踪,记录用户的状态。下面简单介绍一下会话跟踪技术Cookie与Session。 Cookie ,有时也用其复数形式 Cookies,是一个保存在用户客户端计算机中的简单的小型文本

    2024年02月19日
    浏览(48)
  • web学习--Cookie与Session会话技术

    1.概念:客户端会话技术,将数据保存在客户端 使用步骤: 1,创建Cookie对象,绑定数据 2.发送Cookie对象 3.获取Cookie,拿到数据 WebServlet(\\\"/Demo1\\\") public class CookidDemo1 extends HttpServlet {     @Override     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException

    2024年02月13日
    浏览(46)
  • 如何在个人web项目中使用会话技术(cookie&session)?

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 翻开百度百科关于“ 会话 ”的词条,它是这样描述:“ 在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一

    2023年04月22日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包