资讯专栏INFORMATION COLUMN

Cookie和Session详解

Little_XM / 1014人阅读

摘要:例如要想在多个二级域名中共享,需要设置为顶级域名,这样就可以在所有二级域名里面或者到这个的值了。顶级域名只能获取到设置为顶级域名的,设置为其他子级域名的无法获取。

Cookie和Session详解 Cookie Cookie只存储在客服端
Cookie是什么:Cookies是web服务器存放在用户硬盘的一段文本,Cookies允许一个wen站点在用户的机器存放一些文本的信息,并可以在以后重新获取它。这个基于文本的信息存储着一些“键-值”对。

Cookie在http浏览器里面的使用过程

1.当浏览器发送请求时,它会查看你机器上跟域名www.test.com有关的Cookie文件,如果存在同www.test.com有关的 Cookie,浏览器就会把相关的Cookie“键-值”对数据跟请求一起发送到服务器(),如果不存在同www.test.com有关的 Cookie,则浏览器不发送Cookie到服务器。

http协议中,在Request Headers里面通过Cookie:PHPSESSIS=123456发送

2.服务器如果返回Cookie,浏览器会把Cookie存储在域名www.test.com有关的Cookie文件中,提供给下次请求调用

http协议中,在Response Headers里面通过Set-Cookie:PHPSESSIS=123456(名字,值,过期时间,路径和域)返回

3.当然,不是全部Cookie都会存储起来,Set-Cookie设置的过期时间

持久性cookie,设置了cookie的时间,以文件方式存在硬盘上

会话cookie,没有设置cookie时间,cookie的生命周期也就是关闭浏览器前就消失,一般不会保存在硬盘,而是保存在内存上

4.所以单纯使用Cookie不安全

Cookie其实就是键值对存储在文件中,如果一些用户名都存储在里面,只需简单修改文件里面的用户名,就可以达到模仿他人登录,所以相对不安全,当然可以通过其他手段避免,例如加密加盐

Session Session存储在服务端(中介是Cookie或者直接url,使用url传递session_id不详说,这种使用场景比较少)
简单来说,一个请求到达的时候,服务器会先判断是否带有Session信息。如果有,则根据Session ID去数据库中查找是否具有对应的用户身份信息。此处可能会出现Session失效、非法的Session信息等可能性,那么服务器视同无Ssession信息的情况,重新的产生一个随机的字符串,并且在Http返回头中写入新的Session ID信息。另一者,如果服务器成功获取了用户的身份信息则以该身份为请求者提供服务。在http中,客服端的请求里面的session id一般是通过cookie带过来的,所以Session也依赖于cookie。
以php里面Session举例,session_start()开启

首先会去获取客户端cookie里的session_id,如果不存在,会重新创建一个

根据session_id,取到所有相关的信息,放入$_SESSION全局变量里以供使用

如果写session,也是根据session_id写入相关文件,并放入$_SESSION全局变量里以供使用

设置登录态的过期时间,需要设置session的过期时间以及cookie的过期时间才可以真正生效(ini_set修改)

session.cookie_lifetime

这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废

session.gc_maxlifetime

这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除

Cookie 和 session 传输的区别 Cookie主域名和子域名之间的共享

总结一下顶级域名和子级域名之间的cookie共享和相互修改、删除

顶级域名只能设置domain为顶级域名,不能设置为二级域名或者三级域名等等,否则cookie无法生成

二级域名可以设置domain为二级域名或者顶级域名

总的来说,设置cookie的话只能在本域名下或者domain级别高于自身的域名下才会生效!

二级域名能读取设置了domain为顶级域名或者自身的cookie,不能读取其他二级域名domain的cookie。例如:要想cookie在多个二级域名中共享,需要设置domain为顶级域名,这样就可以在所有二级域名里面或者到这个cookie的值了。

顶级域名只能获取到domain设置为顶级域名的cookie,domain设置为其他子级域名的无法获取。

多系统共用登录态的方法一(cookie共享)

在顶级域名下开启session

使用同一个session_id

必须是二级域名,不同域名不适合使用

多系统共用登录态的方法一(SSO,限制没这么多)

SSO单点登录/登出

浏览器访问单点登录的网站,如果session存在就返回数据,如果不存在就跳转到cas server(一个多带带域名的服务)

如果有已经登录过,通过检测cookie,cas server就会302跳转通过url返回Ticket(Ticket是随机且唯一)到网站,如果没有登录过,就跳转到cas server登录页面进行登录,登录成功设置cookie,然后302跳转返回Ticket到网站,同时cas server会存储改Ticket、cookie和网站host的对应关系。

网站接收到Ticket后通过cas server提供的校验url去校验Ticket,cas server确认后返回成功,网站写入当前域名的sessionid

当用户再访问网站的时候,就会判断当前session是否登录


两种登陆方式图
更多内容请关注微信公众“p12310086”,一个程序员和hr一起运营的公众号!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28281.html

相关文章

  • Cookie session详解

    摘要:协议是无状态的,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换建立新的连接,也就是说,服务器无法跟踪会话。而和就是用与解决这种问题。值得一提的是是建立在的基础上创建的。注意在的文件中,设置了的生命周期最长为分钟。 在将cookie 和 session 之前需要先理解什么是会话会话: 用户打开一个浏览器,点击多个超链接,访问多个web资源,然后关闭浏览器,整个过程称为一个...

    wow_worktile 评论0 收藏0
  • 详解 Cookie Session 关系区别

    摘要:目前大多数的应用都是用实现跟踪的。的安全性一般,他人可通过分析存放在本地的并进行欺骗。在安全性第一的前提下,选择更优。考虑到减轻服务器性能方面,应当适时使用。因此,维持一个会话的核心就是客户端的唯一标识,即。 showImg(https://segmentfault.com/img/bV8riL?w=800&h=444); 在技术面试中,经常被问到说说Cookie和Session的区别...

    microelec 评论0 收藏0
  • cookiesession的使用(详解

    摘要:什么是用来存储客户端的一小段文本是一门客户端的技术因为是存储在客户端浏览器中的是为了实现客户端与服务器端之间的状态的保持技术,不安全,不要使用存储敏感信息比如登录状态和登录信息一些敏感的数据应该存储在服务器端的值从哪里来的当你访问一个网站这 什么是cookie, 用来存储客户端的一小段文本是一门客户端的技术 因为cookie是存储在客户端浏览器中的是为了实现 客户端与服务器端之间的状态...

    liujs 评论0 收藏0
  • cookiesession详解

    摘要:所谓的无连接就是服务器收到了客户端的请求之后,响应完成并收到客户端的应答之后,即断开连接。从而节省传输时间。协议对事务的处理没有记忆能力。这种方式某种方面上讲解放了服务器,但是却不利于客户端与服务器的连接。 session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我...

    SwordFly 评论0 收藏0
  • 详解 CookieSession,Token

    摘要:由于是存在客户端上的,所以浏览器加入了一些限制确保不会被恶意使用,同时不会占据太多磁盘空间。签名是对前两部分的签名,防止数据被篡改。的作用最开始的初衷是为了实现授权和身份认证作用的,可以实现无状态,分布式的应用授权。 前言 无状态的HTTP协议 很久很久之前, Web基本都是文档的浏览而已。既然是浏览, 作为服务器, 不需要记录在某一段时间里都浏览了什么文档, 每次请求都是一个新的HT...

    Allen 评论0 收藏0

发表评论

0条评论

Little_XM

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<