浏览网站时为什么老是要我接受Cookie

  我们在浏览网站时,尤其是一些国外网站的时候,经常会出现这样的弹框,提醒你接受全部Cookie;如果不接受,有些弹框甚至会一直出现,不让你访问;那么这个弹框为什么要出现呢?如果你接受了,对你后续浏览网站会有啥影响呢?你的隐私是否会泄露呢?带着这么多的疑惑本文就带你一探究竟。

Cookie

  首先我们要知道什么是Cookie?相信对于很多Web开发的同学,尤其是前端小伙伴来说,Cookie并不陌生;很多开发同学刚上手做项目的时候,就使用过很多第三方的库对Cookie进行过存储操作;根据MDN上对Cookie的解释

HTTP Cookie是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  其实说到底,Cookie就是网站在我们浏览器中存储的一小块字符串数据而已,一般总的大小也就限制在几MB以内;它刚开始只是让网站能够确认访问的用户身份,因为我们都知道Http请求是无状态的,并不能确认是哪个请求是哪个用户发起的;但在请求上带了Cookie之后,就能够确认用户身份。

  Cookie主要以键值对的形式进行存储,如name=jack,我们打开面板查看淘宝网的Cookie:

淘宝网的Cookie

  我们会看到很多的Name和Value,这里有不同的字段我们看下它们所代表的含义:

  • Name:Cookie的名称。
  • Value:Cookie的值。
  • Domain:可以访问该Cookie的域名。
  • Path:Cookie的访问路径。
  • Expires:失效时间。
  • 谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  • Size:Cookie大小。
  • Secure:标记为Secure的Cookie只通过HTTPS请求发送给服务端。
  • SameSite:允许服务器设定Cookie不随着跨站请求一起发送。
  • Priority:优先级。

  这里字段比较多,例如Expires、Path等,一般都是在开发中才会用到的,这里就不过多介绍了;我们着重来介绍下Domain字段,因为本文后面的内容主要都是围绕着这个字段所展开的。

  这里假设我网站的域名是example.com,我给Domain设置的是.example.com,那么我所有example.com子域名下面的网站都是能共享Cookie的,比如a.example.comb.example.com,这种一般用于很多个项目单点登陆,避免用户在类似的网站上重复登陆。

  一个不太典型的案例就是淘宝网和天猫网,虽然他们俩是两个域名,但是都属于阿里旗下,我们在一个网站登陆后就可以访问另外的网站了;比如我们在上图中就能看到,笔者是在淘宝登陆后的,能看到不少的.tmall.com的Cookie;再去访问天猫也是免登陆的。

  但是如果我网站的域名是example.com,但是我给Domain设置的是其他的网址,那这里面可操作的空间就很大了,如果是我们浏览的网站自己跟踪存储的Cookie,我们一般叫做第一方Cookie,这个其实还算正常。

  但是,如果存储的Cookie可访问地址不是我们当前访问的网站,而是别的什么网站,这里就需要特别留意了,是不是把我们的浏览记录提供给友商了,这种Cookie就叫做:第三方Cookie

第三方Cookie

  很多小伙伴相信都有这样的经历,我在搜索平台搜索某样东西,没过多久,会在购物平台上立即推送给我,或者我在购物平台搜索了某样东西,在浏览器的广告中又会给我推送;确实,这其中起到作用的就是上面提到的第三方Cookie

  那么第三方Cookie是如何生成的呢?主要是通过两种方式;第一种就是使用Javascript的document.cookie的方式写入,这种方式一般是两方同属一个集团或者一家公司,因为这里面涉及到数据的传输和加密方式;我们存储到Cookie中的数据一般都会经过加密,如果是两家公司,我不太可能把我的加密方式也告诉你;顶多给你一个npm包,让你来调用,但这里面就涉及代码逻辑了,这就比较复杂了。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  另一种方式就是通过服务端来在请求中带上Set-Cookie字段进行设置,这种方式不会侵入太多的代码,只需要在页面上向第三方资源发起一个请求即可,一般这个请求返回的资源也比较少,比如一个几kb的gif图片。

  比如我们在上面淘宝网中看到很多Cookie都指向了.mmstat.com域名,然后我们搜索请求记录会看到taobao.com向这个域名下发送了很多的图片资源,但是啥都没有返回,反而在响应头中带了很多的Set-Cookie内容。

Set-Cookie设置

  这样就很明显了,mmstat应该就是淘宝旗下的统计以及广告跟踪的平台,笔者找了网上不少资料,大概率是大数据营销平台阿里妈妈统计(Alimama Statistic)的缩写。

GDPR

  说了这么多的Coookie的知识,这和我们的弹窗有什么关系呢?这里就要说到欧盟出台的一部重要的数据安全保护条例,也就是:《通用数据保护条例》(General Data Protection Regulation,下面简称GDPR),它取代的是1995年推出的欧盟《数据保护指令》

  这部法例是在2016年4月14日于欧盟议会上正式通过,并于2018年5月25日在欧盟成员国内正式生效实施的;我们发现这部法例和1995年的《数据保护指令》在时间跨度上有20年之久,我们都知道在这20年间互联网发生了天翻地覆的改变,同时也发生过很多大企业数据泄露的重大安全隐患,因此原来的法律对数据的保护已经跟不上时代的发展了。

  正是由于GDPR的出台,严格规范和限制了企业在个人数据的采集、存储、处理等一系列操作,因此我们才能看到很多网站上出现的接受Cookie的弹框;这里面的内容很多,包含了10个章节,99款条例,本文挑其中一些重要的细节来简单讲解一下,有兴趣的小伙伴可以在下面参考中找到GDPR中文版全文

  首先就是这部法律的适用范围,哪些企业适用呢?主要是两方面:

    谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  1. 欧盟境内成立的任何一家从事个人数据处理活动的公司或实体。
  2. 在欧盟境外成立的公司,只要其数据处理活动与向欧盟境内的个体提供产品或服务。

  也就是说不管你的公司成立是否在欧盟境内,只要你在欧盟境内开展了业务,那你都会被这部法律所约束;那么它究竟约束你去做什么呢?我们继续来看下。

  首先,企业在收集用户的个人信息之前,应当以一种简洁、透明、易懂和容易获取的形式,以清晰和平白的语言向用户说明:

信息应当以书面形式或其他形式提供,包括在合适的情况下通过电子方式提供。

  这点比较重要了,明确说明了信息需要通过书面的形式来提供给用户,这就是我们所看到的弹框的根本原因所在。其次是处罚力度也是相当大的,条款中明确写道:

违反如下条款,应当按第2段的规定施加最高2000万欧元的行政罚款,如果是企业的话,最高可处相当于其上一年全球总营业额4%的金额的罚款,两者取其高的一项进行罚款。

  对于一些大公司,还勉强能够承担这样的罚款,但是对于小公司,这种处罚力度可能就是致命的了;比如腾讯QQ就向国际版用户发布通知,宣布5月20日起停止为欧洲用户提供服务;随后又表示,更新到5.0及以上版本的QQ国际版可继续使用,旧版本则在5月20日停止使用。

  面对如此严格的法律,很多企业也将这样的弹框普及到了其他国家的业务;比如我们都知道Ubuntu是由一家南非的公司Canonical来运营的,但是在欧盟也提供了相关业务,因此,我们去Ubuntu官网下载时也能看到这样的弹框。

Ubuntu官网

我国现状

  说了这么多GDPR的限制,大家肯定会觉得还是西方的月亮圆啊,还是西方保护人权自由,我们国内的的法律还是不够完善,都没有这样的弹框来保护我的知情权益。

  但其实,为了避免个人信息泄露、滥用等问题,其实我们国家从21年开始,也是出台了相关的法律法规,只是我们平时不太去关注而已,这部法律就是:《中华人民共和国个人信息保护法》,下面简称《保护法》,主要适用于在中华人民共和国境内处理自然人个人信息的活动。

  为了避免本文从技术文章变成冗长乏味的法律讲解文章,况且笔者也不是专业的法律出身,因此斗胆引用了网上几段法律条文来解释一下;首先既然是个人信息保护法,那么什么个人信息,它包括哪些呢?《保护法》中明确指出了:

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

个人信息,包括生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等信息。

  没错,最后的行踪轨迹,从宽泛的角度来说,就包括了我们的网页浏览记录等信息,因为这些记录能够间接或直接地反映出个人的身份、兴趣、行为等信息。

Cookie

  那么对于个人信息,《保护法》是怎么来做出要求的呢?原文中有详细的说明:

处理敏感个人信息应当取得个人的单独同意;法律、行政法规规定处理敏感个人信息应当取得书面同意的,从其规定。

以向境内自然人提供产品或者服务为目的,或者为分析、评估境内自然人的行为等发生在我国境外的个人信息处理活动,也适用本法。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

  没错,最后一条已经说得很明确了,只要你是以提供产品或者服务为目的的分析评估我的浏览记录,那你必须要取的我的书面同意,否则就是违法行为。

  那么我。。。。。。同意了吗?没错,打开淘宝网隐私政策,我们就能清楚的看到其中加粗加黑的条文。

  笔者摘录一下其中比较关键的两条给大家看一下:

为向您展示和推荐您可能感兴趣的商品或服务信息,我们会收集和使用您在访问或使用淘宝平台网站或客户端时的浏览、搜索、加购、交易记录并结合依法收集的设备信息、服务日志信息以及其他取得您授权的信息,通过算法模型预测您的偏好特征。

我们会基于您的偏好特征在淘宝及其他第三方应用程序或终端向您推送您可能感兴趣的商业广告及其他信息,或者向您发送商业性消息。我们还会基于对淘宝平台用户浏览、搜索商品或服务的热点、潮流与趋势的统计分析,使用排序精选类算法形成相关精选的榜单,并向您进行推荐。

  隐私政策中其实也已经说的很明确了,第三方应用程序推送感兴趣的商业广告;而且我们在注册登陆的时候就已经授权过了,只是大多情况下没有时间去仔细看网站政策里面说的是什么;但是至于是否要像GDPR中规定的那样,需要通过一个明确的弹框,这个需要从各方面来综合考虑了,例如企业经营成本,需要额外的开发成本,中小企业是否有能力应对,还有用户使用习惯等等方面。

总结

  因此看完本文,我们该怎么做呢?笔者进行了如下几点总结:

  第一,如果你是广告不敏感用户,不介意有广告,或者说觉得重新登录很麻烦,那你看到类似的弹框直接点击接受所有就行了,不用管什么条条框框的内容。

  第二,如果出现接受Cookie的弹框,看下是否有接受必要Cookie的按钮或者选项,然后进行勾选;还有一些网站会把必要Cookie的选项隐藏在设置中。

  比如我们在AdblockPlus的官网,点开设置,就只勾选必要的Cookie,还有一些网站上出现Necessary的字样,也是同样的意思。

AdblockPlus

  第三,当然,上面的Cookie弹框国内还没有这样来做,但是我们可以打开浏览器的阻止第三方Cookie的选项,后续我们会在浏览器地址栏右侧发现一个捂住眼睛的图标。

  比如我们常用的Chrome浏览器,打开设置 => 隐私和安全,然后勾选阻止第三方Cookie的选项;同时也要勾选Do Not Track(不过这个选项对网站没有强制性)。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

Chrome阻止第三方Cookie

  第四,除此之外,如果对浏览器隐私还是不放心,还可以使用额外的保护,通过安装额外插件,如著名的AdGuard和Adblick Plus等,会自动帮助你拦截一些广告,也能防止被标记和追踪;这里笔者也为大家整理准备好了两款软件的Chrome插件,直接在Chrome浏览器中添加安装即可,获取方式在文末。

  这就没了?是的,没了,Cookie的影响其实比较有限,毕竟一般网站的Cookie中也不会存密码等个人信息,而且还经过了加密,能泄漏的用户信息比较有限,最多的就是记录用户的行为习惯、浏览记录等等数据。

  相比Cookie,其实我们更应该当心那些带有“颜色”的钓鱼网站、中奖邮件以及不明来源的二维码等,更要避免在陌生的网站输入自己的真实信息,导致泄漏和诈骗的风险;诶,本文怎么从一篇技术性文章,写成了普法文章,最后居然还写成了防诈骗的了,不过没关系,快来将本文分享并艾特给你身边最容易上当受骗的朋友,提高警惕把。

本文所有软件敬请关注公众号【前端壹读】,后台回复关键词【防止广告追踪】即可获取。

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里

参考

一文读懂GDPR

什么是第三方Cookie

当浏览器全面禁用三方Cookie

GDPR中文版全文

Ubuntu策略

GDPR 规定了什么?

淘宝网隐私

谢小飞博客专用防爬虫链接,想要看最新的前端博客请点这里


本网所有内容文字和图片,版权均属谢小飞所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。如需转载请关注公众号【前端壹读】后回复【转载】。