Cookie的是是非非

Cookie的是是非非

导语:很多网民对Cookie有严重的误解,因此,有必要在网民中间普及Cookie相关知识,本文将试图用通俗化的语言帮助网民理解Cookie的基本常识。

作者:科学公园  飞蠓

还记得‍2013年央视3·15晚会上关于Cookie泄露个人隐私的一段节目激起了轩然大波,Cookie这个IT术语瞬间红遍全国。很多网民对Cookie有严重的误解,因此,有必要在网民中间普及Cookie相关知识,本文将试图用通俗化的语言帮助网民理解Cookie的基本常识。

当我们在浏览器地址栏里输入诸如“http://www.xys.org”这样的地址时,我们就是告诉浏览器,用http协议去www.xys.org这个Web服务器上获取缺省文档并予以展示。所谓“协议”,是人为规定的计算机和计算机之间能相互理解的一种特殊的“语言”,HTTP协议是诸多互联网应用协议中的一个,不过却是当下最热门的一个互联网应用协议,和它比起来,POP3协议、Telnet协议、FTP协议、Gopher协议已经像是恐龙时代的产物了,基于上述古老协议产生的应用,基本上都已经被基于HTTP协议的应用取代了。

和那些古老协议相比,HTTP协议的一个优势是对客户端的应答速度较快。这要得益于它被设计为无连接无状态的协议。所谓无连接无状态,就是执行HTTP协议的Web服务器在处理了客户端的请求之后,立即就关闭了连接,也不保存客户端的访问状态,这就减少了服务器对内存的消耗和网络带宽的占用,相应就提高了服务器的工作效率。

我们可以用一个模拟生活场景来理解它们的工作模式。假设有一群顾客到商店里购物,对于POP3、FTP这样的协议来说,它们所安排的售货员为顾客提供一对一服务,直到顾客最终离开商店为止,如果售货员数量不足,其他的顾客就要等待;而对于HTTP协议,售货员只在顾客需要交互时才出现,三言两语之后就立刻跑去应付另外一个顾客的交互请求,售货员虽然忙一些,但即使很少的售货员也能应付很多的顾客,对于商店来说,工作效率提高了。

可惜的是,HTTP协议下的售货员是个脸盲症患者,它把每一个来询问它的顾客都当成一个新顾客。这和POP3、FTP等协议下的售货员不同,那些售货员都是从头到尾跟着你的,你要是问它:“鸡蛋多少钱一斤?”它回答:“5块钱一斤。”你说:“来10斤。”它会回答:“好嘞,10斤鸡蛋,您拿好了。”而在HTTP协议下是这样的——你问售货员:“鸡蛋多少钱一斤?”它回答:“5块钱一斤。”你说:“来10斤。” 这时,它会满脸茫然:“你是谁?来10斤什么?我不记得你跟我说过话。”你:“……”

HTTP协议下的售货员要想很好的处理上述情况,就只能在你身上打上特定的标记,例如,你去问售货员:“这鸡蛋多少钱一斤?” 它回答:“5块钱一斤”,同时,它在你身上贴张纸条“此人要买鸡蛋”,这样当你跟售货员说“来10斤”时,它听到你说话的同时,又看到你身上这个“此人要买鸡蛋”的纸条,自然就会明白你要买10斤什么,也就能正确地给你提供服务了。

从Web网站设计的角度来讲,要标记客户端计算机保存客户端访问状态,有三种常用方法:一是在返回给客户端的HTML页面中加入一些不显示的信息,这些信息会在用户点击页面中按钮进行提交时发送到服务器上;二是在返回给客户端的HTML页面的链接地址中加入一些信息,点击这些链接时就把这些信息回传到服务器上了;三就是我们今天要谈的主角:Cookie技术。

Cookie里的内容是服务器在把HTML页面数据返回给客户端的时候附加的一些信息,客户端浏览器在收到这些信息后,将其单独保存在计算机上某个特定的文件夹内,形成一个和服务器域名对应的文本文件,这些特殊文件里的特殊格式的文本文件就被称为Cookie,当浏览器再次访问同一个服务器的时候,会把上一次保存的Cookie内容同时发送到指定的服务器上。

Cookie并不神秘,它的出现是为了克服我们上面提到的三种标记方法中前两个方法所存在的不足。那些方法中保存的信息的有效期很没谱:如果浏览器关闭,页面消失,所保存的信息就没了;如果用户把页面用浏览器的“另存为”功能保存在计算机上,所保存的信息又会是永久存在的,而Cookie内保存的信息的有效期可以由服务器指定。此外,访问网站A页面时保存的信息有可能在B页面也有用,用方法一就没法子让他们共享;方法二虽然能够跨页面甚至跨服务器共享信息,但一个较为严重的问题是能传输的数据量太少。不过,归根结底,服务器采用哪种办法在客户端上打标记是网站设计时综合各种因素后自行选择的结果,作为我们使用者,客观上讲,只能被动接受他们的设计,除非你不使用他们的服务,或者愿意接受客户端无标记所带来的混乱和麻烦。

同样,服务器在客户端打标记时保存什么信息,也是网站设计时就确定了的事,网站用这些信息干什么,用户不可能知道,用户只有被动接受。这一点跟用不用Cookie技术无关,只要服务器需要给客户端打标记,都是这样。作为用户,我们只能选择那些有口碑的,对用户隐私保护考虑比较周到的网站,对于那些来路不明、乱七八糟的小网站,还是敬而远之吧。此外,我们还可以在退出浏览器的时候清空Cookie,这样做除了再次访问网站时麻烦一点外,没有什么大的坏处,就好像我们出了商店之后就可以把售货员贴在身上的纸条去掉一样——除非你希望下次进商店之后售货员还能认出那些标记。

现在存在一种叫做“第三方Cookie”的东东,它和所谓“第一方Cookie”没有本质上的区别,只不过它是由你访问的网站(“第一方网站”)中加载的第三方网站的代码创建的,Cookie中的域名指向的是第三方网站的域名,Cookie中的信息会回传到第三方网站上去。打个比方,就是你去甲商店里,那里的售货员除了在你身上留自己商店的标记,还附带帮乙商店在你身上打个标记,这样当你去乙商店的时候,它的售货员就能识别出你身上已经打过的标记。第三方Cookies是网络广告公司的最爱,因为它们可以在用户密集的网站上加入自己的代码,从而可以获取自己需要的信息。从理论上讲,它的安全性和“第一方Cookie”是一样的,但是,第一方网站和第三方网站合作的时候,对第三方网站的Cookie没有丝毫控制权,我们对第一方网站的信任,却自动转移到第三方网站上,这就造成一种隐私保护上的隐患。不过,目前主流浏览器都在“设置”里提供了对第三方Cookie是否接受的选项,而且越来越多的浏览器会默认禁止接受第三方Cookie。

那么,利用Cookie技术能否如3·15晚会上暗访广告销售人员时他们所吹嘘的那样“可以将全国90%的用户尽在掌握。他是男是女,年龄、身份,受教育程度,包括您的邮件注册,包括您参加某个品类抽奖的注册”“拿到cookie以后什么都可以知道,包括手机电脑多少都可以知道”?

理论上讲,Cookie里面当然可以存储这些信息,但是,像性别、年龄、QQ号等等这些精确的个人信息,除了你自己提交给网站再由网站记录在Cookie里之外,是不可能凭空出现在Cookie里的。而正规设计的网站,一般不会把这些信息保存在Cookie里(用户一清空Cookie就没了),它们最有可能将其保存在自己的数据库中,Cookie里顶多保存一个相关联的身份识别号码。

当然像兴趣爱好、年收入情况、上什么网等等信息,倒是有可能通过Cookie获得,不过获得的方法也不是直接从Cookie里读取,而是通过Cookie将客户端和一系列访问事件关联起来,用数据挖掘的方法获得。例如,第三方网站通过Cookie发现我所用的计算机的浏览器在某门户网站里访问了很多跟天文有关的页面,它就可以推断我喜爱天文。只是这样所得的结论是很不精确的,万一是我的朋友用我的电脑访问了这些页面呢?更不要说我们可以通过清除Cookie来干扰它的数据挖掘过程和结论。只不过广告主对分析结论的准确度不太讲究,他们只要保证自己的广告能够覆盖特定群体就满足了,“宁可错杀千人勿使一人漏网”而已。

谈到这里,需要提醒网民的是,虽然保存在自己计算机上的Cookie是安全的,但Cookie一旦被流氓软件截获和上传,其后果将是灾难性的。

2013年2月1日,《信息安全技术公共及商用服务信息系统个人信息保护指南》国家标准正式实施,这是我国个人隐私保护领域的一项重要进展。长期以来,我国个人隐私保护方面存在严重不足,相当一部分网民对此毫不在意,认为只有名人、大人物才需要保护个人隐私,这种错误观念使得自家电脑门户洞开、流氓软件大行其道,同时大批网民的个人资料被钓鱼网站利用、被中小网站收集贩卖。真诚希望广大网民能够从此重视这个问题,保护好自己的个人隐私不被非法侵害。

编辑注:科学公园是由几名科学爱好者发起创建的一个平台。这个平台每天都会更新一些大大小小的有意思的科学内容。感兴趣的话点 这里 吧。 

当前:

知道日报

推荐:知乎日报

上一篇:【春节习俗】初二回门禁忌多

下一篇:宴席上的营养误区:只吃菜肴不吃粮