Cookie详解

Cookie,复数形态Cookies,中文名称为小型文本文件。指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废除)。为网景公司的前雇员Lou Montulli在1993年3月所发明。


COOKIE - 简介

Cookie是一小段文本信息,伴随着用户请求和页面在 Web服务器 浏览器 之间传递。Cookie包含每次用户访问站点时Web应用程序都可以读取的信息。因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。Cookie正是这样的一段随 HTTP 请求一起被传递的额外数据。

因为Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及它会随着每次请求被发送到服务器,所以应该保证它不要太大。 Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以,不适合保存重要的或者涉及隐私的内容。

COOKIE - 分类

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。

内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

COOKIE - 主要用途

因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

Cookie另一个典型的应用是当登录一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,(如果该Cookie尚未到期)浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。

另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

COOKIE - Cookie的限制

大多数浏览器支持最大为4096字节的Cookie。由于这限制了Cookie的大小,所以只好用Cookie来存储少量数据,或者存储用户ID之类的标识符。用户ID随后便可用于标识用户,以及从数据库或其他数据源中读取用户信息。浏览器还限制站点可以在用户计算机上存储的Cookie的数量。大多数浏览器只允许每个站点存储20个Cookie;如果试图存储更多Cookie,则最旧的Cookie便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的Cookie总数作出绝对限制,通常为300个。

COOKIE - 生存周期

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

COOKIE - 使用和禁用Cookies

用户可以改变浏览器的设置,以使用或者禁用Cookies。

Google Chrome

“自定义和控制”(浏览器地址栏右侧的扳手图标) > 选项(设置) > 高级选项(显示高级设置)
通过cookie设置,更改cookie设置(隐私权说明 > 内容设置 > Cookie(允许站点存储本机数据 (建议)

Konqueror

如果没有设置cookie列表,请记住在域名前面加入“.”,例如.wikipedia.org,否则wikipedia将不会读取cookie(针对KDE 3.3)。

微软 Internet Explorer 

工具 > Internet选项 > 隐私页 调节滑块或者点击“高级”,进行设置


Mozilla Firefox

工具 > 选项 > 隐私 (注:在Linux版本中,可能会是如下操作:编辑 > 属性 > 隐私, 而Mac则是:Firefox > 偏好 > 隐私)

设置Cookies选项

设定阻止/允许的各个域内Cookie

查看Cookies管理窗口,检查现存Cookie信息,选择删除或者阻止它们

Opera

按F12弹出一个菜单,从中可以快速设置允许或禁用cookie。

更多设置项目在 首选项 > 高级 > cookie

也可对不同域作不同的cookie设置。在网页空白处 按右键 > 编辑站点首选项 > cookie

苹果公司 Safari

Safari > 预置 > 安全标签

选择以下的选项

总是 接受 Cookies

永不 接受 Cookies

接受 Cookies 仅从您浏览的站点(例如,不接受来自其它站点的广告)默认的选项

您可以显示所有驻留在您浏览器中的 cookies,也可随时将它们之一删除。 

COOKIE - Cookies弊端

一些人反对cookies在网络中的应用,他们的理由如下:

识别不精确

如果在一台计算机中安装多个浏览器,每个浏览器都会以独立的空间存放cookie。因为cookie中不但可以确认用户,还能包含计算机和浏览器的信息,所以一个用户用不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,cookie不会区分他们的身份,除非他们使用不同的用户名登录。

隐私,安全和广告

Cookies在某种程度上说已经严重危及用户的隐私和安全。其中的一种方法是:一些公司的高层人员为了某种目的(譬如市场调研)而访问了从未去过的网站(通过搜索引擎查到的),而这些网站包含了一种叫做网页臭虫的图片,该图片透明,且只有一个象素大小(以便隐藏),它们的作用是将所有访问过此页面的计算机写入cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie的网站,随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。

偷窃Cookies和脚本攻击

虽然cookies没有中电脑病毒那么危险,但它仍包含了一些敏感信息:用户名,电脑名,使用的浏览器和曾经访问的网站。用户不希望这些内容泄漏出去,尤其是当其中还包含有私人信息的时候。

这并非危言耸听,跨站点脚本(Cross site scripting)可以达到此目的。在受到跨站点脚本攻击时,cookie盗贼和cookie毒药将窃取内容。一旦cookie落入攻击者手中,它将会重现其价值。

Cookie盗贼:搜集用户cookie并发给攻击者的黑客。攻击者将利用cookie信息通过合法手段进入用户帐户。

Cookie投毒:一般认为,Cookie在储存和传回服务器期间没有被修改过,而攻击者会在cookie送回服务器之前对其进行修改,达到自己的目的。例如,在一个购物网站的cookie中包含了顾客应付的款项,攻击者将该值改小,达到少付款的目的。这就是cookie投毒。 

COOKIE - Cookies的替代品


鉴于cookie的局限和反对者的声音,有如下一些替代方法:

Brownie方案,是一项开放源代码工程,由SourceForge发起。Brownie曾被用以共享在不同域中的接入,而cookies则被构想成单一域中的接入。这项方案已经停止开发。

P3P,用以让用户获得更多控制个人隐私权利的协议。在浏览网站时,它类似于cookie。

在与服务器传输数据时,通过在地址后面添加唯一查询串,让服务器识别是否合法用户,也可以避免使用cookie。

COOKIE - 央视315曝光网易窃取用户信息隐私

2013年3月15日晚,央视315在行动晚会曝光了网易同意第三方公司加代码,获取用户cookie信息,追踪用户上网行为

报道称,为了对广告效果进行监测,一些网站的确同意第三方公司加代码。第三方公司通过植入代码、获取cookie,就可以锁定用户,精准投放广告。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值