`

第一方Cookie和第三方Cookie的认识

 
阅读更多

 

什么是 Cookie?

Cookie 是您访问过的网站创建的文件,用于存储浏览信息,例如您的网站偏好设置或个人资料信息。共有两种类型的 Cookie:第一方 Cookie 是由地址栏中列出的网站域设置的 Cookie, 而第三方 Cookie 来自在网页上嵌入广告或图片等项的其他域来源。

什么是 Cookie?

Cookie 是您访问过的网站创建的文件,用于存储浏览信息,例如您的网站偏好设置或个人资料信息。共有两种类型的 Cookie:第一方 Cookie 是由地址栏中列出的网站域设置的 Cookie, 而第三方 Cookie 来自在网页上嵌入广告或图片等项的其他域来源。

Cookie可以用来提升用户体验,比如网站可以使用Cookie来记录用户的登录状态,用户只要登录一次就可以不用登录了,购物网站通过Cookie来保存购物车中的商品等。同时很多的网站分析都是依靠Cookie来完成的。

以网站统计为例,目前主要的统计方式是日志记录法和页面标记法 。一般日志记录法细化到IP,而页面标记法细化到Unique  Visitor。UV并不仅仅是一个指标,更重要的是的它可以把一个用户多次访问的事件联系在一起。包括用户第一次从哪里来,第二次从哪里来,在网站上的浏览轨迹等都可以查询出来。

Cookie是如何工作的?

一般来说,Cookie通过HTTP Headers从服务器端返回到浏览器上。首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie ,然后,浏览器在它的请求中通过Cookie header包含这个已经创建的Cookie,并且反它返回至服务器,从而完成浏览器的论证。

比如,我们访问一个网站,来到了登录的页面。页面需要我们输入用户名和密码,同时下面有一个选项,叫“保留我的登录状态”,如果输入了用户名,密码。为了下次在来这个网站,不用再重新输入,我们激活了保留状态的选项。最后点了提交。这时,我们的浏览器就会和网站服务器之间通过HTTP协议进行连接,提交刚才输入的内容和选择。服务器收到以后,会判断这个用户名密码是否正确,因为我们需要保留状态,就需要设置Cookie来记录状态。那服务器会在返回的HTTP数据包的头部包含SetCookie这个指令来告诉浏览器要保存的Cookie。浏览器收到以后会把这个Cookie加密存储到电脑上。这个Cookie记录的一般是用户在这个网站的唯一的ID。之后,只要每次访问这个网站(只要还是这个域名),我们的浏览器在请求这个网站服务器数据的时 候,都会在HTTP请求数据包的头部增加一条包含Cookie数据的信息,比如这里会告诉服务器:“我是你的用户,我的ID是9527。”那服务器收到这 个信息,就不会再提示登录,而我们就已经是登录的状态了。

第一方Cookie和第三方Cookie

Cookie通常可以分为两类,第一方Cookie和第三方Cookie,第一方Cookie和第三方Cookie,都是网站在客户端上存放的一小块数据。他们都由某个域存放,只能被这个域访问。他们的区别其实并不是技术 上的区别,而是使用方式上的区别。比如,访问www.a.com这个网站,这个网站设置了一个Cookie,这个Cookie也只能被www.a.com 这个域下的网页读取,这就是第一方Cookie。如果还是访问www.a.com这个网站,网页里有用到www.b.com网站的一张图片,浏览器在 www.b.com请求图片的时候,www.b.com设置了一个Cookie,那这个Cookie只能被www.b.com这个域访问,反而不能被 www.a.com这个域访问,因为对我们来说,我们实际是在访问www.a.com这个网站被设置了一个www.b.com这个域下的Cookie,所以叫第三方Cookie。

第一方Cookie的优势和应用

第一方Cookie的最大优势是接受率高。一般主流的浏览器的都会有隐私的设置,可以让用户设置是否接受Cookie,接受哪些Cookie。除了 完全不接受Cookie这个设置以外,其他情况下,第一方Cookie都是会被用户接受的(不接受的话,是没办法把那小块数据保存下来的)。所以,如果没有特殊要求,使用第一方Cookie会比第三方Cookie,我们通过分析工具得到的数据会更准确。

第三方Cookie的优势和应用

第三方Cookie的接受率不如第一方Cookie(不过主流的浏览器默认的设置下也接受带P3P协议的第三方Cookie,我的经验是接受率能达 到90%,甚至95%以上),但在某些特定情况下可以实现第一方Cookie无法实现的功能。比如,当我们有多个域名的网站需要跟踪,我们希望了解到用户点击某个广告到达域名A下的网页,然后可能浏览了不论那个域名下的页面,最后在域名B下的网页完成注册的情况。广告可以在域名A下的网页被跟踪到,而注册可以在域名B下的网页跟踪到。如果我们使用第一方Cookie,会为域名A建立一个Cookie,为域名B再建立一个Cookie,他们可以关联各自域名下网页上的行为,但是无法关联起来。而使用第三方Cookie,那么无论多少个域,都只有一个Cookie,一个属于第三方域的Cookie,网站下所有域都能共享这个Cookie,那么所有的行为都能被关联起来分析。

结论:对于通过脚本型的网站分析工具来获取数据

  • Cookie是必须的,离开Cookie我们什么也分析不了。
  • 第一方Cookie接受率高,更准确,没有特殊需要就用他。
  • 第三方Cookie可以跨域跟踪,特别需求可以应用。

P3P解决第三方cookie存取的问题

P3P(Platform for Privacy Preferences)是由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。支持P3P的Web站点可以为浏览者声明他们的隐私策略。支持P3P的浏览器则可以将Web站点的策略与用户的隐私偏好进行对比,并为用户提出不匹配的警告。因此,用户可以被通知有关Web隐私的处理方式。更详细的说明请看http://www.w3.org/P3P/ 的介绍。

以上几乎都是废话,我自己的理解就是通过P3P 可以使 用户自己指定浏览器的隐私策略。而这里只用到了关于cookie的一些设置。
我们打开ie浏览器–>工具–>internet选项–>隐私分页 用户可以通过手工 “导入” 用户隐私策略文件

PHP使用P3P来跨域跟踪的示例

首先修改Windows文件,将要测试的两个域名进行指向。

  • 127.0.0.1        www.a.com
  • 127.0.0.1        www.b.com

第一步:创建 a_setcookie.php 文件,内容如下:

<?php //header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); ?>

第二部:创建 a_getcookie.php 文件,内容如下:

<?php var_dump($_COOKIE); ?>

第三部:创建 b_setcookie.php 文件,内容如下:

<script src="http://www.a.com/a_setcookie.php?id=www.b.com"></script>

三个文件创建完毕后,我们通过浏览器依次访问:

  • http://www.b.com/b_setcookie.php
  • http://www.a.com/a_getcookie.php

我们会发现,在访问b.com域的时候,我们并没有在a.com域设置上cookie值。

然后我们修改一下a_setcookie.php文件,去掉注释符号,a_setcookie.php即为:

<?php   header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');   setcookie("test", $_GET['id'], time()+3600, "/", ".a.com");   ?>

再次通过浏览器依次访问:

  • http://www.b.com/b_setcookie.php
  • http://www.a.com/a_getcookie.php

这次,你会发现在访问b.com域的时候,我们设置了a.com域的cookie值。

其他Cookie相关知识

  • cookies是暂存在电脑里的.txt格式的文本文件。
  • 一台电脑的所有用户,用记事本都可以看到暂存的Cookie。
  • 只有访问的站点能够建立获取first-party cookies。
  • 访问的站点可以允许其他域名浏览cookie信息。
  • 电脑内的信息不会因为cookies受任何影响,你可以随时手动删除。
  • cookies文件大小限制为4k。
  • 各浏览器对cookie的限制不同,IE8和Firefox为50个,Opera为30个。

参考资料

原文地址:http://www.biaodianfu.com/first-party-cookie-and-third-party-cookie.html

结合:http://i.lh0596.cn/article/it/319.htm

主要是通过P3P解决第三方cookie存取的问题,比如在单点登陆网站相关页面设置cookie的最前面增加
<?php
header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
?>

 

我是先记录一下,说不定以后就用上呢。


分享到:
评论

相关推荐

    layui扩展第三方插件js包

    在layui的基础上扩展第三方jQuery插件,能够进一步丰富其功能,满足更多复杂场景的需求。以下是对标题和描述中涉及的知识点的详细说明: 1. **layui插件**:layui提供了一系列内置组件,如表格、表单、按钮、对话框...

    认识并了解Cookie

    - 第三方Cookie通常是指由非当前访问网站的域设置的Cookie。 - 它们可能被用来跨多个网站追踪用户的行为,这增加了隐私泄露的风险。 **针对这些问题,目前常见的解决方案包括:** 1. **加密和安全传输:** - 对...

    JAVA通过Session和Cookie实现网站自动登录的技术

    在网站开发中,实现自动登录功能是非常重要的,JAVA 通过 Session 和 Cookie 实现网站自动登录的技术是其中的一种方法。本文将详细介绍如何使用 Session 和 Cookie 实现网站自动登录的技术。 一、什么是 Session 和...

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    1. **数据泄露**:即使进行了加密处理,如果Cookie被第三方截获,加密的用户名和密码仍然可能被破解。 2. **跨站脚本攻击(XSS)**:如果网站受到XSS攻击,攻击者可能会利用这一漏洞窃取Cookie中的敏感信息。 3. **...

    cookieconsent:一个基于Javascript的解决方案,用于阻止甚至允许第三方Cookie遵守GDPR

    脚本标签阻止一些第三方服务要求您在HTML页面中插入脚本标签。 可以禁用它们,直到用户允许它们为止。脚本换行某些服务未插入SCRIPT标记中,并被其他代码层所遮盖。 这就是为什么该脚本创建一个全局包装器函数的原因...

    session与cookie的区别和联系?

    - Cookie可能涉及到用户隐私问题,尤其是第三方Cookie,容易被用于跨站追踪。 - Session由于数据存储在服务器端,更有利于保护用户隐私。 5. **依赖性**: - Cookie可以独立工作,但Session依赖于Cookie来传递...

    微信小程序cookie维护插件 实现自动设置获取cookie功能

    1. 考虑到微信小程序的安全限制,避免存储敏感信息在Cookie中,因为它们可能会被第三方获取。 2. 合理设置Cookie的生命周期,既不能太短导致频繁登录,也不能太长带来安全风险。 3. 在处理Cookie超时事件时,要确保...

    cookie分析工具

    2. **安全设置**:用户应了解浏览器的Cookie管理设置,如限制第三方Cookie、定期清理Cookie等,以保护隐私。 3. **隐私政策**:在使用网站时,用户应关注其隐私政策,了解其如何使用Cookie,并根据需要做出相应调整...

    C#cookie实现历史记录

    - **SameSite属性**:为防止跨站请求伪造(CSRF)攻击,C# 4.5及以上版本支持设置Cookie的`SameSite`属性,限制第三方网站使用该Cookie。 - **大小限制**:单个Cookie的大小不应超过4KB,否则可能无法正确发送。...

    新浪、支付宝等第三方登录demo

    3. 用户授权后,第三方平台会重定向回你的应用,并附带一个授权码或访问令牌。 4. 应用接收到授权码后,向第三方平台发送请求,换取访问令牌和刷新令牌。 5. 获取到令牌后,应用可以使用这些令牌获取用户的基本信息...

    python实现网络爬虫使用了第三方库beautifulsoup来解析网页文件,并且实现了cookie登录特定网站访问.zip

    通常,可以使用Python的内置解析器如`html.parser`,或者第三方解析器如`lxml`(速度更快)。 2. **解析网页**:使用`BeautifulSoup()`函数加载网页内容,然后可以使用类方法如`.find()`或`.find_all()`来查找特定...

    原生登录cookie保持提供webview使用

    首先,你需要初始化`CookieManager`,启用第三方cookie支持,并清空旧的cookie存储。 ```java CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptThirdPartyCookies(webView, ...

    jquery第三方API

    1. **引入库**:首先需要在HTML文件中通过`&lt;script&gt;`标签引入jQuery库和相应的第三方API库。 2. **检查兼容性**:确保所选API与当前使用的jQuery版本兼容。 3. **学习API文档**:每个第三方API都有详细的文档,学习...

    tpc-check:检查用户是否启用了第三方Cookie

    TPC检查检查用户是否已启用第三方cookie。 第三方Cookie基本上是常规Cookie,但来自不同的域。 它们对于识别用户的浏览器以及聚集特定用户...内部工作有几个步骤来确定是否启用了第三方Cookie: 从第三方域(有一个单独

    重新设置IE浏览器开启COOKIE功能

    第一方Cookie是由你访问的网站设置的,而第三方Cookie则是由该网站包含的其他域(如广告网络)设置的。会话Cookie仅在浏览器会话期间存在,关闭浏览器后即消失,而永久Cookie则在指定过期日期前一直保留。 正确配置...

    程序化广告 关键点 什么是CookieMapping.docx

    1. **第一方Cookie与第三方Cookie**:当用户访问一个网站时,该网站设置的Cookie被称为第一方Cookie。而当网站中包含了来自其他域的内容(如广告、图片等),这些其他域设置的Cookie则被称为第三方Cookie。 2. **...

    03-登录和第三方授权1

    【网络协议与服务器登录授权】 在信息技术领域,登录和授权是两个重要的概念,它们涉及到用户在应用程序中的身份验证和权限管理。...OAuth2提供了一种安全的第三方授权方式,保障了用户数据在多平台间的共享与交换。

    查看cookie工具

    一些网站可能会设置第三方Cookie,追踪用户的网络行为。因此,定期清理无用或可疑的Cookie,启用浏览器的隐私模式,以及使用反追踪功能,是保护个人信息安全的重要措施。 总结来说,查看Cookie工具是理解网站工作...

    TP5 Session和Cookie

    但Cookie可以跨域访问,对于某些场景(如第三方登录)更为适用。开发者需要根据实际需求来选择使用Session还是Cookie。 在ThinkPHP5框架中,这两种技术的使用不仅限于简单的设置和获取。它们还可以与其他功能结合,...

Global site tag (gtag.js) - Google Analytics