admin管理员组

文章数量:1534342

2024年3月14日发(作者:)

(讯)Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、

进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于

RFC2109(已废弃),最新取代的规范是RFC2965。

基本信息

Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将

Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发

送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以

由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器

可以知道该用户是否合法用户以及是否需要重新登录等。

主要用途

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以

判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录

网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登

录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。

用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都

会写入Cookies,以便在最后付款时提取信息。

生存周期

Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问

同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户

手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样

可以有效保护个人隐私。Cookie在生成时就会被指定一个Expire值,这就是

Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。

1

有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马

上清除Cookie,不会记录用户信息,更加安全。

识别功能

如果在一台计算机中安装多个浏览器,每个浏览器都会在各自独立的空间存放

cookie。因为cookie中不但可以确认用户,还能包含计算机和浏览器的信息,所

以一个用户用不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie

信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,cookie不

会区分他们的身份,除非他们使用不同的用户名登录。

反对cookies者

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

1、识别不精确

2、隐私,安全和广告

Cookies在某种程度上说已经严重危及用户的隐私和安全。其中的一种方法

是:一些公司的高层人员为了某种目的(譬如市场调研)而访问了从未去过的网站(通

过搜索引擎查到的),而这些网站包含了一种叫做网页臭虫的图片,该图片透明,

且只有一个像素大小(以便隐藏),它们的作用是将所有访问过此页面的计算机写入

cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie

的网站,随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人

员。

因为更具有针对性,使得这套系统行之有效,收到邮件的客户或多或少表现出

对产品的兴趣。这些站点一旦写入cookie并使其运作,就可以从电子商务网站那

里获得报酬,以维系网站的生存。

鉴于隐藏的危害性,瑞典已经通过对cookie立法,要求利用cookie的网站必

2

须说明cookie的属性,并且指导用户如何禁用cookie。

脚本攻击

尽管cookie没有病毒那么危险,但它仍包含了一些敏感信息:用户名,计算

机名,使用的浏览器和曾经访问的网站。用户不希望这些内容泄漏出去,尤其是当

其中还包含有私人信息的时候。

这并非危言耸听,一种名为跨站点脚本攻击(Cross site scripting)可以达到此

目的。通常跨站点脚本攻击往往利用网站漏洞在网站页面中植入脚本代码或网站页

面引用第三方法脚本代码,均存在跨站点脚本攻击的可能,在受到跨站点脚本攻击

时,脚本指令将会读取当前站点的所有Cookie内容(已不存在Cookie作用域限制),

然后通过某种方式将Cookie内容提交到指定的服务器(如:AJAX)。一旦Cookie

落入攻击者手中,它将会重现其价值。

建议开发人员在向客户端Cookie输出敏感的内容时(譬如:该内容能识别用户

身份):

1)设置该Cookie不能被脚本读取,这样在一定程度上解决上述问题。

2)对Cookie内容进行加密,在加密前嵌入时间戳,保证每次加密后的密文都

不一样(并且可以防止消息重放)。

3)客户端请求时,每次或定时更新Cookie内容(即:基于第2小条,重新加密)

4)每次向Cookie写入时间戳,数据库需要记录最后一次时间戳(防止Cookie

篡改,或重放攻击)。

5)客户端提交Cookie时,先解密然后校验时间戳,时间戳若小于数据数据库

中记录,即意味发生攻击。

基于上述建议,即使Cookie被窃取,却因Cookie被随机更新,且内容无规

律性,攻击者无法加以利用。另外利用了时间戳另一大好处就是防止Cookie篡改

3

或重放。Cookie窃取:搜集用户cookie并发给攻击者的黑客。攻击者将利用cookie

信息通过合法手段进入用户帐户。

Cookie篡改:利用安全机制,攻击者加入代码从而改写Cookie内容,以便

持续攻击。 (编选:)

4

本文标签: 用户网站信息脚本浏览器