Cookie与Session的区别
admin
2024-01-29 02:49:42
0

Cookie与Session的区别

Session是保存在服务端的,有一个唯一标识 session.getId() 。在服务端保存Session的方法很多, 内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的

Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比 如Memcached之类的来放 Session。

Cookie作用于每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。

常见问题

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据 库、文件中

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方 式。

1.Cookie运行在客户端,Session运行在服务端,对吗? 

不完全正确。Cookie是运行在客户端,有客户端进行管理;Session虽然是运行在服务器端,但是 sessionID作为一个Cookie是存储在客户端的。 

2.浏览器禁止Cookie,Cookie就不能用了,但Session不会受浏览器影响,对吗? 

错。浏览器禁止Cookie,Cookie确实不能用了,Session会受浏览器端的影响。很简单的实验,在 登录一个网站后,清空浏览器的Cookie和隐私数据,单机后台的连接,就会因为丢失Cookie而退 出。当然,有办法通过URL传递Session。 

3.浏览器关闭后,Cookie和Session都消失了,对吗?

错。存储在内存中额Cookie确实会随着浏览器的关闭而消失,但存储在硬盘上的不会。更顽固的 是Flash Cookie,不过现在很多系统优化软件和新版浏览器都已经支持删除Flash Cookie。百度采 用了这样的技术记忆用户:Session在浏览器关闭后也不会消失,除非正常退出,代码中使用了显 示的unset删除Session。否则Session可能被回收,也有可能永远残留在系统中。

4.Session 比 Cookie 更安全吗? 不应该大量使用Cookie吗?

错误。Cookie确实可能存在一些不安全因素,但和JavaScript一样,即使突破前端验证,还有后端 保障安全。一切都还要看设计,尤其是涉及提权的时候,特别需要注意。通常情况下,Cookie和 Session是绑定的,获得Cookie就相当于获得了Session,客户端把劫持的Cookie原封不动地传给 服务器,服务器收到后,原封不动地验证Session,若Session存在,就实现了Cookie和Session的 绑定过程。因此,不存在Session比Cookie更安全这种说法。如果说不安全,也是由于代码不安 全,错误地把用作身份验证的Cookie作为权限验证来使用。

5.Session是创建在服务器上的,应该少用Session而多用Cookie,对吗?

错。Cookie可以提高用户体验,但会加大网络之间的数据传输量,应尽量在Cookie中仅保存必要 的数据。

6.如果把别人机器上的Cookie文件复制到我的电脑上(假设使用相同的浏览器),是不是能够登录别人的 帐号呢?如何防范?

是的。这属于Cookie劫持的一种做法。要避免这种情况,需要在Cookie中针对IP、UA等加上特殊 的校验信息,然后和服务器端进行比对。

7.在IE浏览器下登录某网站,换成Firefox浏览器是否仍然是未登录状态?使用IE登录了腾讯网站后,为什 么使用Firefox能保持登录状态?

不同浏览器使用不同的Cookie管理机制,无法实现公用Cookie。如果使用IE登录腾讯网站,使用 Firefox也能登录,这是由于在安装腾讯QQ软件时,你的电脑上同时安装了针对这两个浏览器的插 件,可以识别本地已登录QQ号码进而自动登录。本质上,不属于共用Cookie的范畴。 

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...