Cookie测试大纲

一.   Cookie技术背景说明

1.  Cookie文件的实质

  Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内。客户端会将它保存在本地机器上(如IE便会保存在本地的一个txt文件中),由客户端程序对其进行管理,过期的Cookie会自动删除。每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于那个域下对应目录的有效Cookie信息附在网页请求的头部信息当中一并发送给服务端。

 

2.  Cookie文件的保存位置

  不同的客户端,其Cookie的保存方式、保存位置各不相同,这里只说一下Windows系统中IECookie文件保存位置。

  在Windows 2000/XP系统中,Cookie默认保存在C:/Documents and Settings/<username>/Cookies/目录下(此处的<username>为你登录系统时使用的用户名,在开始->运行中输入cookies便可打开该目录),命名规则为<username>@<domain>.txt

  与2000/XP不同的是,在Windows 95/98/ME系统中Cookie文件默认是保存在C:/Windows/Cookies/目录下的。

 

3.  Cookie文件的格式

  IECookie文件实际上就是一个txt文本文件,只不过换行符标记为Unix换行标记(0x0A),由于记事本对Unix换行标记不兼容,打开后内容全在一行看起来不方便,我们可以用EditPlusUltraEdit-32打开,打开之后,会看到形式如下的内容:

name

value

domain/

1600

1263382784

30020896

452781968

30020892

*

每一行的内容说明:

第一行 Cookie变量名

第二行 Cookie变量值

第三行 该Cookie变量所属域,形如youkuaiyun.com/blog.youkuaiyun.com/blog.youkuaiyun.com/lixianlin/

第四行 可选标志

第五行 该Cookie过期时间(FILETIME格式)的高位整数

第六行 该Cookie过期时间(FILETIME格式)的低位整数

第七行 该Cookie创建时间(FILETIME格式)的高位整数

第八行 该Cookie创建时间(FILETIME格式)的低位整数

第九行 Cookie记录分隔符(为一个星号*

 

第三行中Cookie变量所属域,如youkuaiyun.com/,它是一个根域,也就是一级域,表示该Cookie变量在该根域下的所有目录中的网页都有效,不管访问该域下的哪个目录中的网页,浏览器都会将该Cookie信息附在网页头部信息当中发送给服务端;blog.youkuaiyun.com/,是一个二级域,表示该Cookie只对blog这个二级域下目录中的网页有效;blog.youkuaiyun.com/lixianlin/,是一个二级域下的目录,只有访问blog这个二级域下lixianlin这个目录中的网页时,才会把该Cookie信息附在请求头部信息当中发送给服务端。需要指出的是youkuaiyun.com/www.youkuaiyun.com/并不相同,前者是根域,后者是一个二级域,只是人们习惯了www这样的形式,所以大多数的网站首页都用http://www.xxx.com/这样的二级域来访问

二. Cookie测试

1.  Cookie的保存路径

说明:

a)   通常情况下cookie的保存路径可以通过:注册表“HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/Cookies ”查看

b)   比较异常的情况,cookie保存路径为“%userprofile%/Local Settings/Temp/Cookies

测试影响因素:

a)   默认cookie目录

b)   用户自定义cookie目录(目录为系统盘,其他磁盘,中文,全半角,简繁体,特殊字符,空格,超长路径)

c)   系统用户名为中文

d)   目标文件夹不存在

e)   目标文件夹只读

f)   目标文件夹隐藏

g)   目标文件夹无访问权限

h)   开启UAC

 

2.  应用程序写Cookie权限

说明:

a)   Vista下开启UAC之后,会涉及到用户权限提升及虚拟化

b)   Ie保护模式下,其完整性级别为低,而其他ie核心的浏览器启动时,完整性级别为高,cookie目录的完整性级别为低

测试影响因素:

a)   开启UACadministrator,自建管理员,标准用户(提升/不提升权限)

b)   Ie开启保护模式和关闭保护模式

c)   其他IE核心浏览器

d)   Internet选项隐私等级设置

e)   Cookie完整性级别高于应用程序完整性级别

 

3.  应用程序写Cookie方式

说明:

a)   通常情况下,写cookie不能跨域,例如当前页面是s.sohu.com域下,种cookiejsv.sohu.com上,那么这时候通常不会写不成功的

b)   如果需要跨域写cookie,那么需要用到Crossdomain.Xml,简单来说这文件是一份白名单,指定的站点是能与该站点进行跨域数据传输的

测试影响因素:

a)   cookie的文件与当前页面属于不同域

 

4.  Cookie内容及安全性

说明:

a)   通常情况下cookie文件中的信息,会交由其他应用程序进行处理(通常情况下是ie在进行浏览的时候读取这些信息,也有另外的应用程序会对这些cookie信息进行分析然后用于自己的特定用途)

测试影响因素:

a)   需求实现的检验

b)   破坏各行数据进行容错性测试

c)   修改服务器时间使过期

d)   修改特定行key所对应的valuejs或者正则或者sql语句,检验基本的安全性

 

5.  Cookie的冲突

说明:

a)   因为cookie是需要操作本地磁盘文件的,因而需要考虑杀毒软件及安全监控软件

测试影响因素:

a)  cookie过程中各类安全监控软件是否提示

b)  cookie后使用各种杀毒软件扫描是否提示异常

三. 参考资料

http://blog.youkuaiyun.com/lixianlin/archive/2008/07/30/2738229.aspx

http://www.flashas.net/asbc/20080310/2632.html

 

<think>首先,用户的问题是:“我想检测浏览器中是否存在第三方Cookie 请问如何检测浏览器中的第三方Cookie”。我需要基于提供的引用和系统指令来回答。 系统指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考引用: - [^1]: 讨论Safari浏览器如何阻止第三方cookie,以及如何写入第一个cookie。 - [^2]: 关于第三方Cookie的概述、工作原理、应用场景等。 - [^3]: Safari更新禁用第三方Cookie,其他浏览器也采取措施。 - [^4]: Chrome关闭第三方Cookie导致内嵌Bilibili视频无法加载。 用户的问题是关于检测浏览器中是否存在第三方Cookie。我需要提供检测方法。 关键点: - 第三方Cookie是来自不同域的Cookie,通常用于追踪。 - 浏览器如Safari默认禁用第三方Cookie,但其他浏览器可能有不同行为。 - 从引用[^1]中,Safari只会在第三方域下完全没有cookie时阻止第三方cookie;如果已有cookie,则可以读写。 - 检测方法可能涉及检查特定域下的Cookie是否存在。 步骤: 1. **理解第三方Cookie检测**:检测浏览器中是否有第三方Cookie,通常需要尝试设置或读取一个来自第三方域的Cookie。 2. **方法概述**: - 手动方法:通过浏览器设置检查。 - 编程方法:使用JavaScript或开发者工具。 3. **基于引用的见解**: - 引用[^1]:Safari的行为是,如果第三方域下没有cookie,则阻止;如果有,则允许。这暗示了检测策略:尝试设置一个cookie,然后检查是否成功。 - 引用[^2]:提供了第三方Cookie的定义和工作原理。 - 引用[^3]:Safari禁用第三方Cookie。 - 引用[^4]:Chrome关闭第三方Cookie会导致问题,这可用于检测。 4. **检测方法**: - **使用开发者工具**:在浏览器中打开开发者工具(F12),转到Application或Storage标签,查看Cookies。检查不同域下的Cookies。 - **使用JavaScript**:编写一个脚本尝试设置和读取第三方Cookie。 - 例如,从一个页面(如example.com)尝试设置另一个域(如ad.com)的Cookie,然后读取。 - 如果读取成功,则存在第三方Cookie支持;否则,可能被阻止。 - **考虑浏览器差异**:Safari默认阻止,Chrome和Firefox可能允许但有设置。 5. **逐步解答**: - 解释什么是第三方Cookie(基于引用[^2])。 - 描述检测方法。 - 提供代码示例(如果适用)。 6. **生成相关问题**:在回答后添加相关问题,如示例所示。 7. **语言和格式**:用中文回答;行内数学表达式用$...$;独立公式用$$...$$(但这里可能不涉及数学,所以可能不需要)。 回答结构: 1. **介绍第三方Cookie**:简要解释。 2. **检测方法**: - 方法1:手动检查(浏览器设置)。 - 方法2:使用开发者工具。 - 方法3:使用JavaScript检测。 3. **代码示例**:提供JavaScript代码。 4. **注意事项**:讨论浏览器兼容性和隐私设置。 5. **引用标识**:自然地添加引用。 6. **相关问题**:生成2-3个相关问题。 JavaScript检测代码思路: - 在一个页面中,尝试设置一个第三方Cookie。 - 然后,在另一个页面或同一页面读取它。 - 由于跨域限制,可能需要使用iframe或CORS,但第三方Cookie通常在iframe中设置。 - 简化版:使用两个域;但用户可能没有两个域,所以建议使用开发者工具或模拟。 实用方法: - 对于普通用户,建议使用开发者工具。 - 对于开发者,提供脚本。 基于引用[^1],可以检测:如果第三方域下没有cookie,尝试写入;如果写入成功,则支持;否则,阻止。 最终回答大纲: 1. 开头:解释检测需求。 2. 手动检测方法。 3. 开发者工具方法。 4. JavaScript方法(代码示例)。 5. 总结。 6. 相关问题。</think>### 如何检测浏览器中的第三方Cookie 第三方Cookie是指由用户访问的网站(第一方)以外的其他域(第三方)设置或读取的Cookie,常用于广告追踪、社交媒体集成等场景[^2]。检测浏览器中是否存在第三方Cookie,可以帮助您了解浏览器的隐私设置是否生效,或调试网站功能(如内嵌视频加载问题[^4])。以下是逐步检测方法,基于浏览器的不同机制(如Safari默认阻止第三方Cookie[^3],而Chrome等需手动设置)。 #### 步骤1: 理解第三方Cookie的检测原理 - 第三方Cookie的检测核心是:尝试在第三方域下设置或读取Cookie,并验证其是否成功。浏览器行为差异大: - Safari:如果第三方域下无任何Cookie,则完全阻止新Cookie写入;如果已有Cookie,则允许读写[^1]。 - Chrome/Firefox:默认允许,但用户可手动关闭“阻止第三方Cookie”选项[^4]。 - 检测关键:模拟一个第三方场景,例如从您的网站(第一方域)访问另一个域(第三方域)的Cookie。 #### 步骤2: 手动检测方法(适合普通用户) 通过浏览器设置快速检查第三方Cookie是否被阻止: 1. **打开浏览器设置**: - Chrome:转到 `设置 > 隐私和安全 > Cookie及其他网站数据`,查看“阻止第三方Cookie”是否启用。 - Safari:转到 `偏好设置 > 隐私`,检查“阻止所有Cookie”或“智能防跟踪”选项。 - Firefox:转到 `选项 > 隐私与安全 > 增强型跟踪保护`,选择“严格”模式会阻止第三方Cookie。 2. **验证效果**: - 如果设置中已启用阻止,浏览器很可能无第三方Cookie。 - 测试内嵌内容:访问一个包含第三方服务的页面(如论坛中的Bilibili视频[^4])。如果内容加载失败(如空白页面),则第三方Cookie被阻止。 此方法简单,但无法精确检测特定域下的Cookie存在性。 #### 步骤3: 使用开发者工具检测(适合开发者或高级用户) 浏览器开发者工具可直接查看所有Cookie,包括第三方源: 1. **打开开发者工具**: - 在浏览器中打开目标网页(如 `example.com`),按 `F12` 或右键选择“检查”。 2. **导航到Cookie面板**: - Chrome/Firefox:转到 `Application` 标签 > `Storage` 部分 > `Cookies`。 - Safari:转到 `Storage` 标签 > `Cookies`。 3. **检查第三方Cookie**: - 在左侧域名列表中,选择当前页面的域(第一方,如 `example.com`)。 - 查看右侧表格:Cookie的“Domain”列显示来源。如果域名与当前页面域不同(如 `ad.com`),则为第三方Cookie。 - 示例:如果在 `example.com` 页面下看到 `Domain: .bilibili.com` 的Cookie条目,则存在第三方Cookie[^4]。 4. **验证读写**: - 手动添加一个测试Cookie:在开发者工具中,右键点击域名,选择“Add Cookie”,输入第三方域名(如 `Domain: test.com`)和值。 - 刷新页面:如果Cookie被保存,则浏览器支持第三方Cookie;否则,被阻止(如Safari默认行为[^3])。 此方法直观可靠,但需手动操作。 #### 步骤4: 使用JavaScript编程检测(适合开发者) 通过JavaScript脚本自动化检测第三方Cookie的存在。核心思路:在iframe中设置第三方Cookie,然后尝试读取。基于Safari的机制(无Cookie时阻止写入[^1]),此代码模拟第三方域操作。 ##### JavaScript代码示例 ```html <!DOCTYPE html> <html> <head> <title>第三方Cookie检测</title> <script> // 定义第三方域(需替换为您的测试域,如 ad.com) const thirdPartyDomain = 'https://example-third-party.com'; // 示例第三方域 let cookieExists = false; // 步骤1: 尝试在iframe中设置第三方Cookie function setThirdPartyCookie() { const iframe = document.createElement('iframe'); iframe.src = `${thirdPartyDomain}/set-cookie.html`; // 第三方域的页面 iframe.style.display = 'none'; document.body.appendChild(iframe); // 延迟后检查Cookie是否设置成功 setTimeout(checkThirdPartyCookie, 1000); } // 步骤2: 检查第三方Cookie是否可读 function checkThirdPartyCookie() { const iframe = document.createElement('iframe'); iframe.src = `${thirdPartyDomain}/read-cookie.html`; // 第三方域的读取页面 iframe.style.display = 'none'; iframe.onload = function() { // 假设第三方页面通过window.postMessage返回Cookie值 window.addEventListener('message', (event) => { if (event.origin === thirdPartyDomain) { cookieExists = event.data.cookieValue !== null; alert(`第三方Cookie存在: ${cookieExists ? '是' : '否'}`); } }); }; document.body.appendChild(iframe); } // 初始化检测 window.onload = setThirdPartyCookie; </script> </head> <body> <p>检测中... 查看控制台或弹出结果。</p> </body> </html> ``` ##### 代码说明: - **前置条件**: - 需要两个域:第一方域(如 `your-site.com`)和第三方域(如 `ad.com`)。您可使用本地开发服务器模拟(例如,用 `localhost:8000` 和 `localhost:8001`)。 - 在第三方域下创建两个文件: - `set-cookie.html`: 设置Cookie,例如:`document.cookie = "test_cookie=exists; path=/; domain=ad.com";` - `read-cookie.html`: 读取Cookie并发送消息,例如:`window.parent.postMessage({ cookieValue: document.cookie }, '*');` - **检测逻辑**: - 如果 `cookieExists` 为 `true`,则浏览器允许第三方Cookie。 - 如果为 `false`,则可能被阻止(如Safari无Cookie时[^1])。 - **注意事项**: - 跨域安全:确保第三方域允许CORS(开发时可禁用浏览器安全限制)。 - 浏览器差异:Safari可能完全阻止,Chrome需检查设置[^4]。 - 真实环境测试:使用在线工具如 [Cookiebot](https://www.cookiebot.com/) 或 [BrowserStack](https://www.browserstack.com/) 跨浏览器验证。 #### 总结与注意事项 - **检测可靠性**:JavaScript方法最精确,但需开发环境;手动和开发者工具方法更便捷。Safari默认阻止第三方Cookie[^3],而Chrome关闭后会导致内嵌内容失败[^4]。 - **隐私影响**:检测本身不侵犯隐私,但避免在生产环境滥用。遵守GDPR等法规[^2]。 - **引用说明**:Safari的阻止机制基于第三方域下Cookie的初始状态[^1],这解释了为何检测需先尝试写入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值