Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >旋转跳跃的cookie

旋转跳跃的cookie

原创
作者头像
霍格沃兹测试开发Muller老师
发布于 2022-05-26 10:15:56
发布于 2022-05-26 10:15:56
4772
举报

什么是cookie?

我们都知道,Http的特点是无状态,无连接,服务器但从网络连接上是无法知道用户的身份,那么怎么办呢? 所以它就会给每个客户端的用户颁发一个通行证,这样服务器就能从这个通行证确认客户的身份了,这个通行证就是cookie~客户端请求服务器的时候,如果服务器需要记录这个用户状态,就使用response向客户端浏览器发一个小cookie,客户端浏览器会把这cookie保存起来,再次请求时就带着cookie一同提交给服务器,以此来辨认用户状态。

cookie的基本工作原理

cookie主要是通过报头HTTPHeader来传递数据,也就是在请求头和消息头里面传递数据,cookie机制有两种报头,set-cookie和cookie。set-cookie存在服务器响应的消息头中, cookie则存在于客户端请求的消息头中。(图片来自网上)

<br style="box-sizing: border-box;"/>

(1)客户端在浏览器输入URL,发送读取网页的请求。

(2)服务器接收到请求后,产生一个Set-Cookie报头,放在HTTP报文中一起回传客户端,发起一次会话。

(3)客户端收到应答后,若要继续该次会话,则将Set-Cookie中的内容取出,形成一个Cookie.txt文件储存在客户端计算机里。

(4)当客户端再次向服务器发出请求时,就在电脑里找该网站的Cookie.txt。根据此Cookie.txt产生Cookie报头,放在HTTP请求报文中发给服务器。

(5)服务器接收到包含Cookie报头的请求,检索其Cookie中与用户有关的信息,生成一个客户端所请示的页面应答传递给客户端。 浏览器的每一次网页请求,都可以传递已存在的Cookie文件,如浏览器的打开或刷新网页操作。

cookie格式

Cookie由变量名和值组成,格式如下:

Set-Cookie: "name=value;domain=domain.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;secure"其中name=value是必选项,其它都是可选项。

  • name:一个唯一确定的cookie名称。通常来讲cookie的名称是不区分大小写的。- value:cookie的值。最好为cookie的name和value进行url编码- domain:cookie对于哪个域是有效的。所有向该域发送的请求中都会包含这个cookie信息。这个值可以包含子域,也可以不包含,举个栗子a: a.qqq.com ,b: b.qqq.com 如果域a生产一个能在a和b都访问的cookie 就要将cookie的domain设置为qqq.com。- path: 表示这个cookie影响到的路径,浏览器跟会根据这项配置,像指定域中匹配的路径发送cookie。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。这是因为cookie能让其path路径下的页面访问。- expires:失效时间, 它确定了Cookie有效终止日期,何时应该停止向服务器发送这个cookie。如果不设置这个时间戳,浏览器会在页面关闭时即将删除所有cookie。- secure: 安全标志,指定后只有在使用SSL链接时候才能发送到服务器,如果是http链接则不会传递该信息。就算设置了secure属性也并不代表他人不能看到你机器本地保存的 cookie 信息。 查看cookie:

我们可以在浏览器中查看我们的cookie,在设置-隐私设置和安全性-内容设置-cookie-查看所有cookie和网站数据,来查看我们在当前浏览器上所有的cookie,如下图 可以在chrome中查看百度的cookie

也可以通过浏览器F12查看当前的cookie,在F12后,network-cookie中查看对应的cookie:

跳转的cookie:

代码语言:txt
AI代码解释
复制
   在广告业务的测试中,我们经常需要从admin平台跳转到某一个账户的投放平台上,admin平台的url:admin.test.123.cn ,投放平台的url:test.123.cn。 那么为什么我们可以从一个平台跳转到另一个平台而不用登陆呢?  因为我们有神奇的小饼干—cookie哦!
代码语言:txt
AI代码解释
复制
   因为我们在admin.test.123.com上登录的时候,会在test.123.cn上种cookie,当我们在跳转到平台的时候,这个cookie的域没有变,仍是test.123.cn 所以平台是可以直接登录,而不用再次输入用户名密码。
代码语言:txt
AI代码解释
复制
   有的时候我们在业务线测试中,需要模拟登录,从a.qihoo.net 模拟登录跳转到 test.e.360.cn ,域名不一样,为什么也是可以直接跳转,不需要输入用户名密码呢? 因为header跳转可以给其他站点设置cookie,为啥捏? 举个例子吧~ 

1 在 http://a.com/test.php代码:

header('location:http://b.com/test.php');

2 在http://b.com/test.php的代码:

setcookie('name','qqq',time()+3600);

代码语言:txt
AI代码解释
复制
   在访问a.com/test.php 的时候 我们发现页面会跳转到b.com/test.php 并且在b.com上设置了cookie,过程可以理解为浏览器请求a.com/test.php 的时候a.com服务器返回302给浏览器,浏览器拿到相应消息头的location,存到内存中后,此时浏览器与a.com的通信过程其实就结束了,也就是一个请求与相应就结束了,然后浏览器拿着location地址重新请求b.com/test.php ,所以我们就可以看到浏览器跳转的画面了,此时b.com返回给浏览器相应消息头里面有set-cookie 的消息,那么浏览器得到这个cookie信息生成的文件就会存放到浏览器中的目录下了。可以理解为如下所示的过程: 

在实际业务中,我们需要从a.qihoo.net模拟登录跳转到test.e.360.c,所以这个过程可以理解为:从a.qihoo.net 模拟登录跳转到 test.e.360.cn,实际上是我们从a.qihoo.net上location到test.e.360.cn上,并在e.360.cn上种了cookie,这个cookie信息通过加密,所以我们就可以不用登录直接可以跳转了 。在实际业务中是怎么保证加密安全的呢?一般会用到第三方的服务,从a.qihoo.net平台跳转到test.e.360.cn平台的时候,可以带一个token值,这个值是a.qihoo.net平台用了一个oauth服务,通过用户名密码得到的一个值,传给了test.e.360.cn平台,它在接到这个token值后也使用了这个服务去解密,得到用户名密码, 这样就可以种这个用户名和密码的cookie了~ 实现跳转啦~

<br style="box-sizing: border-box;"/>

Q

<br style="box-sizing: border-box;"/>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
作者你好,我一直有个疑问,在A创建完后开始进行初始化属性填充时,此时A是执行了doCreateBean(第七步)申请到了地址,但在B进行属性填充A时又将对象A的匿名内部类给执行了(第十一步),这个时候和一开始A自己申请的地址不应该是不一样的吗?
作者你好,我一直有个疑问,在A创建完后开始进行初始化属性填充时,此时A是执行了doCreateBean(第七步)申请到了地址,但在B进行属性填充A时又将对象A的匿名内部类给执行了(第十一步),这个时候和一开始A自己申请的地址不应该是不一样的吗?
11点赞举报
这个时候,得到的A是从三级缓存里面获取的一个Factory生成的,有可能一样(没有使用代理),也可能不一样(使用了代理) 三级缓存里面存的是前面暴露的时候传入的Lambda表达式() -> getEarlyBeanReference(beanName, mbd, bean),我是这样理解的,不知道有没有错
这个时候,得到的A是从三级缓存里面获取的一个Factory生成的,有可能一样(没有使用代理),也可能不一样(使用了代理) 三级缓存里面存的是前面暴露的时候传入的Lambda表达式() -&gt; getEarlyBeanReference(beanName, mbd, bean),我是这样理解的,不知道有没有错
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
跨域ajax请求中的cookie传输问题
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 对CORS协议不了解的同学,可以猛击这里。
跑马溜溜的球
2020/12/07
2.2K0
跨域ajax请求中的cookie传输问题
【NGINX入门】9.Nginx负载均衡并实现session共享的方法和实践
在项目实践中,有时我们需要多台服务器进行负载,以扩展服务器的宽带、增加吞吐量和提高网络数据的处理能力,从而提高用户的体验感,保证项目的质量。当一个项目部署在多台服务器上,我们习惯于使用nginx做负载均衡,这样同一个IP访问项目的时候会被自动分配到不同的服务器上; 但是,如果多台服务器的session不同步的话,则会导致很多问题,比如我们的登录状态、用户信息、数字字典等都会归零,都需要重新登录之后才能获取到,这样给用户的体验感就会很差,所以在多台服务器进行负载均衡的时候我们就得要考虑到多台服务器之间的session同步了。
辉哥
2021/02/04
4.4K0
深入解析Cookie技术
0×00 引言 在Web技术的发展史上,Cookie技术的出现是一次重大的 变革。但是, Cookie技术又是一项非常有争议的技术,从它诞生之日起就成了广大网络用户和Web开发人员的一个争论焦点,原因不是Cookie的功能太弱,而是认为Cookie的使用会对网络用户的隐私信息构成危害。 Cookie技术最先被Netscape公司引入到Navigator浏览器中。之后,WoridWideWeb协会支持并采纳了Cookie标准,微软也在InternetExpiorer浏览器中使用了Cookie。现在,绝大多数
FB客服
2018/02/05
1.4K0
深入解析Cookie技术
SSO单点登录
SSO单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
WindRunnerMax
2020/08/27
2.2K0
二维码劫持案例分析
微信扫描二维码登录网站,相信很多网站登录中都有这个功能。但是这个功能使用不当,将会出现劫持漏洞。话不多说,直接分享三个实战挖掘的案例,三个的实现方式都不一样(已脱敏).
FB客服
2020/05/14
2.1K0
二维码劫持案例分析
跨域 Cookie 实现单点登录
单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com、c.com)都认为已经登录。
用户7657330
2020/08/14
1.9K0
【基本功】 前端安全系列之二:如何防止CSRF攻击?
当当当当,我是美团技术团队的程序员鼓励师美美~“基本功”专栏又来新文章了,本篇是我们前端安全系列文章的第二篇,主要聊聊前端开发过程中遇到的CSRF问题,希望对你有帮助哦~
美团技术团队
2019/03/22
2K0
【基本功】 前端安全系列之二:如何防止CSRF攻击?
同源策略和跨域解决方法
第一部分:同源策略:same-origin policy 1.同源策略的由来: 1995年,同源策略由Netscape(曾经的浏览器霸主,拒绝微软收购请求,被IE给整垮。现在发展为火狐浏览器背后的Mozilla)引入。目前,所有浏览器都遵循同源策略。 2.同源定义:即同协议、同域名、同端口号 例如:http://www.test.com:80/test.html;     协议:http;域名:www.test.com;端口号:80(默认端口,可以省略) http://www.test.com/test10
用户1149564
2018/01/11
2K0
同源策略和跨域解决方法
快速入门网络爬虫系列 Chapter13 | 模拟登陆
在输入账号密码和验证码成功后,要点击Preserve log,如果不选择此处,当我们打开新的的网页时,会被冲刷掉。
不温卜火
2020/10/28
6500
快速入门网络爬虫系列 Chapter13 | 模拟登陆
全面解读HTTP Cookie
今天webryan给team做了一个关于HTTP cookie的分享,从各个方面给大家介绍一下大家耳熟能详的Cookie。主要是翻了维基百科的很多内容,因为维基百科的逻辑实在是很清晰:),ppt就不分享了,把原始的草稿贴出来给大家。欢迎批评指正。
j_bleach
2019/07/02
9600
【安全】573- 大前端网络安全精简指南手册
DOM型和反射性都是通过诱导用户点击链接执行,并且都是临时型的,但是反射型属于服务端安全漏洞而DOM型属于客户端安全漏洞
pingan8787
2020/04/26
6900
【安全】 Cookie
后面会把前端进阶的课程内容都总结一遍。有些都是很常见的知识,但是为了梳理自己的知识树,所以尽量模糊的地方都会记录
神仙朱
2020/02/17
1.4K0
面试官:说下Cookie和Session的关系和区别
在技术面试中,经常被问到“Cookie和Session的区别”,大家都知道一些,Session比Cookie安全,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,恐怕就不怎么清楚了。
公众号 IT老哥
2021/01/14
16.5K0
面试官:说下Cookie和Session的关系和区别
web 应用常见安全漏洞一览
SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。
用户7657330
2020/08/14
7370
CSRF攻击原理介绍和利用
注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。
全栈工程师修炼指南
2020/10/23
4.6K0
CSRF攻击原理介绍和利用
小饼干Cookie的大魅力
早期互联网只是用于简单的页面浏览,并没有交互,服务器也无法知道不同的请求是否来自同一个浏览器,不知道某用户上一次做了什么。每次请求都是相互完全独立的,这也是 HTTP 协议无状态特征的表现。这种缺陷显然无法满足交互式 Web 发展的需求,Cookie 作为一种解决这一问题的方案,被当时最强大的网景浏览器公司提出。
天存信息
2021/06/21
8470
小饼干Cookie的大魅力
XSS的一些基本概念
若两个URL 协议,端口,host都相同,则这两个URL同源。 这个方案叫做“协议/主机/端口元组”,或者直接是 “元组”
ConsT27
2022/02/11
1.2K0
XSS的一些基本概念
理解Cookie和Session机制
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
哲洛不闹
2018/09/18
1.3K0
理解Cookie和Session机制
前端网络安全 常见面试题速查
XSS 安全漏洞 简单转义是否有防护作⽤ HTML 标签⽂字内容 有 HTML 属性值 有 CSS 内联样式 ⽆ 内联 JavaScript ⽆ 内联 JSON ⽆ 跳转链接 ⽆
Cellinlab
2023/05/17
7400
前后端接口鉴权全解 Cookie/Session/Token 的区别
不知不觉也写得比较长了,一次看不完建议收藏夹!本文主要解释与请求状态相关的术语(cookie、session、token)和几种常见登录的实现方式,希望大家看完本文后可以有比较清晰的理解,有感到迷惑的地方请在评论区提出。
前端达人
2021/05/11
1.4K0
相关推荐
跨域ajax请求中的cookie传输问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档