首页 > 其他分享 >cookie和session

cookie和session

时间:2023-04-17 16:35:37浏览次数:31  
标签:服务器端 sessionID session cookie 服务器 客户端

(一)cookie和session原理及区别

cookie采用的是客户端的会话状态的一种储存机制。它是服务器在本地机器上存储的小段文本或者是内存中的一段数据,并随每一个请求发送至同一个服务器。

session是一种服务器端的信息管理机制,它把这些文件信息以文件的形式存放在服务器的硬盘空间上(这是默认情况,可以用memcache把这种数据放到内存里面)当客户端向服务器发出请求时,要求服务器端产生一个session时,服务器端会先检查一下,客户端的cookie里面有没有session_id,是否过期。如果有这样的session_id的话,服务器端会根据cookie里的session_id把服务器的session检索出来。如果没有这样的session_id的话,服务器端会重新建立一个。PHPSESSID是一串加了密的字符串,它的生成按照一定的规则来执行。同一客户端启动二次session_start的话,session_id是不一样的。 

区别:Cookie保存在客户端浏览器中,而Session保存在服务器上。Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了

(二)session产生的session_id放在cookie里面,如果用户把cookie禁止掉,是不是session也不能用了呢?

禁止掉cookie后,session当然可以用,不过通过其他的方式来获得这个sessionid,比如,可以跟在url的后面,或者以表单的形势提交到服务器端。从而使服务器端了解客户端的状态。

(三)为什么说session 比cookie更安全?

真正的cookie存在于客户端硬盘上的一个文本文件,如果两者一样的话,只要cookie就好了,让客户端来分提服务器的负担,并且对于用户来说又是透明的。但实际上不是。

session的sessionID是放在cookie里,要想攻破session的话,得分两步:

第一要得到sessionID。攻破cookie后,你要得到sessionID,sessionID是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。

第二取有效sessionID。sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内攻破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了。

使session失效的方法:
1.关闭tomcat  2.重启web应用  3.session时间到  4.无效的session

(四)cookie和session的区别

①存在的位置:

cookie 存在于客户端,临时文件夹中;  session存在于服务器的内存中,一个session域对象为一个用户浏览器服务

②安全性
cookie是以明文的方式存放在客户端的,安全性低,可以通过一个加密算法进行加密后存放;  session存放于服务器的内存中,所以安全性好

③网络传输量
cookie会传递消息给服务器;  session本身存放于服务器,不会有传送流量

④生命周期(以20分钟为例)
cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束;
session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁。但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期。关机会造成session生命周期的结束,但是对cookie没有影响

⑤访问范围
cookie为多个用户浏览器共享;  session为一个用户浏览器独享

 

标签:服务器端,sessionID,session,cookie,服务器,客户端
From: https://www.cnblogs.com/imreW/p/17326267.html

相关文章

  • 爬取的数据存mysql中、加代理,cookie,header,加入selenium、布隆过滤器、scrapy-redis实
    上节回顾#1scrapy架构 -爬虫:写的一个个类-引擎: -调度器:排队,去重-下载器-pipline-下载中间件-爬虫中间件#2命令 -scrapystartproject项目名-scrapygensipder爬虫名网址-scrapycrawl爬虫名字-run.py#......
  • flask的sqlalchemy快速插入数据、scoped_session线程安全、基本的增删查改、一对多、
    今日内容sqlalchemy快速插入数据scoped_session线程安全基本的增删改查一对多多对多连表查询1sqlalchemy快速插入数据#sqlalchemy是什么ORM框架,跟其他web框架没有必然联系,可以独立使用#安装,快速使用,执行原生sql#创建表和删除表-不能创建......
  • 分布式session
    https://blog.csdn.net/wangb_java/article/details/107418160 实现同域 @Bean publicCookieSerializercookieSerializer(){ DefaultCookieSerializerserializer=newDefaultCookieSerializer(); serializer.setCookieName("JSESSIONID");//1 ......
  • 监听器Listener使用&Session
    使用配置xml配置1.编写一个监听ServletContext生命周期的Listener;实现Listener接口在当前2.项目中注册(在web.xml)使用;publicclassMyServletContextListenerimplementsServletContextListener{@OverridepublicvoidcontextInitialized(ServletContextEventsce){......
  • 在Express中使用Cookie和Session
    如果想要通过NodeJS使用cookie,那么你需要安装"cookie-parser"包,如果是session那么需要安装"cookie-session"安装方法:npminstallcookie-parser-Snpminstallcookie-session-S然后在服务端引用varcookieParser=require('cookie-parser');//cookievarcookieSessi......
  • Django中使用session,并设置过期时间
    Django中session的使用使用背景django中自带了一个数据库,名字是djang_session,用户做用户凭证。它有三个字段session_keysession_dataexpire_data这个数字会返回给客户端存储的相关信息过期时间流程:1.用户首次输入账户名和密码,服务端判断正确之后创建一个sesi......
  • 为何vs编译边出来的程序ebp-4存放的不是第一个局部变量?而是security_cookie——本质上
    快速识别 最后那个call就是比较存的随机数和ebp异或的值是否和之前是否一样:    探究security_cookie在程序中的作用 from:https://www.kn0sky.com/?p=66学习环境:Windows1020H2+VisualStudio2019前言在学习看反汇编程序的时候,使用VS2019编译的releas......
  • 集群中几种session同步方案
    集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。1.客户端cookie加密这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。问题:session中数......
  • python 之 session鉴权的处理
    一、session鉴权的处理1.requests的会话对象就像一个浏览器一样,它会在同一个会话中自动处理cookie信息,不需要写任何额外的代码。importrequests  session=requests.Session()#理解为就是一个浏览器  type(session)  requests.sessions.Sess......
  • vuex存储和本地存储(localstorage、sessionstorage)的区别
    1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。3.永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。注:很多朋友觉得用localstorage可以代替vuex,对于不变的数据确实可......