cookie
(储存在用户本地终端上的数据)
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265[1] 。
- 中文名
- 储存在用户本地终端上的数据
- 外文名
- Cookie
- 复数形式
- Cookies
- 中文译名
- 饼干
目录
-
▪ flash
-
11 PHP Cookies
诞生时间
Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前 提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器 可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。[2]
Cookie的安全级别包括组织所用Cookie,接受所有Cookie,中级,和高级
主要用途
服
务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定 注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用 场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信 息。
使用和禁用Cookie
用户可以改变浏览器的设置,以使用或者禁用Cookies。
工具 > Internet选项 > 隐私页
调节滑块或者点击“高级”,进行设置.
(注: 在Linux版本中,是如下操作: > 首选项 > 隐私 , 而Mac则是:Firefox > 属性 > 隐私)
设置Cookies选项
设定阻止/允许的各个域内Cookie
查看Cookies管理窗口,检查现存Cookie信息,选择删除或者阻止它们
苹果计算机 Safari
Safari > 预置 > 安全标签
选择以下的选项
总是 接受 Cookies
永不 接受 Cookies
接受 Cookies 仅从您浏览的站点 (例如,不接受来自其它站点的广告) 预设的选项.
您可以显示所有驻留在您浏览器中的 cookies,也可随时将它们之一删除。
NETSCAPE
“PREFERENCEADVANCEDCOOKIES”,在出现的窗口中有三个选项,选择“DISABLECOOKIES”即可关闭 COOKIE。在IE中,选择“查看”/“INTERNET选项”/“高级",在随后出现的窗口中找到“COOKIES”一项,选择“禁止所有的 COOKIE 使用”可关闭COOKIE。
Konqueror
如果没有设置cookie列表,请记住在域名前面加入“.”,例如.,否则百度将不会读取cookie(针对KDE 3.3)。
Cookies就是服务器暂存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机,本文简单介绍什么是cookies,cookies有什么作用,以及网站利用cookie存在什么问题。
什么是Cookies(“小甜饼”)呢?简单来说,Cookies就是服务器暂时存放在你的电脑里的资料(.txt 格式的文本文件),好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookies 会把你在网站上所打的文字或是一些选择都记录下来。当下次你再访问同一个网站,Web服务器会先看看有没有它上次留下的Cookies资料,有的话,就会 依据Cookie里的内容来判断使用者,送出特定的网页内容给你。
cookies有什么作用呢?许多网站上都有新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到 你,并且向你问好,是不是觉得很亲切?当然这种作用只是表面现象,更重要的是,网站可以利用cookies跟踪统计用户访问该网站的习惯,比如什么时间访 问,访问了哪些页面,在每个网页的停留时间等。利用这些信息,一方面是可以为用户提供个性化的服务,另一方面,也可以作为了解所有用户行为的工具,对于网 站经营策略的改进有一定参考价值。例如,你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的Cookies,也可能它只记录了你在 该站点上曾经访问过的Web页,在你下次访问时,网站根据你的情况对显示的内容进行调整,将你所感兴趣的内容放在前列。这是高级的Cookie应用。目前 Cookies 最广泛的是记录用户登录信息,这样下次访问时可以不需要输入自己的用户名、密码了——当然这种方便也存在用户信息泄密的问题,尤其在多个用户共用一台电脑 时很容易出现这样的问题。
另外,有人认为网站利用cookies可能存在侵犯用户隐私的问题,但由于大多用户对此了解不多,而且这种对用户个 人信息的利用多数作为统计数据之用,不一定造成用户的直接损失,因此对于cookies与用户隐私权的问题并没有相关法律约束,很多网站仍然在利用 cookie跟踪用户行为,有些程序要求用户必须开启cookie才能正常应用。IE浏览器用户可以通过“隐私”选项中的隐私设置的高低来决定是否允许网 站利用cookie跟踪自己的信息,从全部限制到全部允许,或者限制部分网站,也可以通过手动方式对具体的网站设置允许或者禁止使用cookies进行编 辑。IE浏览器的默认设置是 “中级”-对部分网站利用cookie有限制。个人电脑的cookies设置(对IE浏览器而言)可通过菜单“工具-Internet选项-隐私”来查看 和修改。
生存周期
Cookie可以保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除Cookie)。而还有一些Cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。
Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有 效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户 信息,更加安全。
识别功能
如果
在一台计算机中安装多个浏览器,每个浏览器都会在各自独立的空间存放cookie。因为cookie中不但可以确认用户,还能包含计算机和浏 览器的信息,所以一个用户用不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie信息,另一方面,对于在同一台计算机上使用同一浏览器的 多用户群,cookie不会区分他们的身份,除非他们使用不同的用户名登录。
反对cookies者
一些人反对cookie在网络中的应用,他们的理由如下:
1、识别不精确
参见上面的识别功能。
2、隐私,安全和广告
Cookies在某种程度上说已经严重危及用户的隐私和安全。其中的一种方法是:一些公司的高层人员为了某种目的(譬如市场调研)而访问了从未去过的网站(通过搜索引擎查 到的),而这些网站包含了一种叫做网页臭虫的图片,该图片透明,且只有一个像素大小(以便隐藏),它们的作用是将所有访问过此页面的计算机写入 cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie的网站,随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。
因为更具有针对性,使得这套系统行之有效,收到邮件的客户或多或少表现出对产品的兴趣。这些站点一旦写入cookie并使其运作,就可以从电子商务网站那里获得报酬,以维系网站的生存。
鉴于隐藏的危害性,瑞典已经通过对cookie立法,要求利用cookie的网站必须说明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 篡改或重放。
Cookie 窃取:搜集用户cookie并发给攻击者的黑客。攻击者将利用cookie信息通过合法手段进入用户帐户。
Cookie 篡改:利用安全机制,攻击者加入代码从而改写 Cookie 内容,以便持续攻击。
具体含义
cookie 历来指就着牛奶一起吃的点心。然而,在因特网内,“cookie”这个字有了完全不同的意思。那么“cookie”到底是什么呢?“Cookie”是小量信息,由网络服务器发 送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信 息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦阁下从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 cookie。
相关问题
Cookie 有哪些用途?
Cookie 的用途之一是存储用户在特定网站上的密码和 ID。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量空间来储存这些首选项。这样,每次 阁下登录该网站时,阁下的浏览器将检查阁下是否就该唯一的服务器有任何预先定义的首选项(cookie)。如果有的话,浏览器将此 cookie 随阁下对网页的请求一起发送给服务器。Microsoft 和 Netscape 使用 cookie 在其网站上创建个人起始页。各家公司利用 cookie 的一般用途包括:在线定货系统、网站个人化和网站跟踪。
网站个人化是 cookie 最有益的用途之一。例如,当谁来到 CNN 网站,但并不想查看任何商务新闻。网站允许他将该项选为关闭选项。从那时起(或者直到 cookie 逾期),他在访问 CNN 网页时将不会读到商务新闻。
这些 Cookie 是如何起作用的?
文档的 HTML 代码中的命令行告诉浏览器设置某一名称或数值的 cookie。以下是用来设置 cookie脚本的一个普通实例。
Set-Cookie: name = VALUE;
expires = DATE;
path = PATH;
domain = DOMAIN_NAME;
那么安全性如何?HTTP Cookie 不能用来从阁下的硬驱上检索个人数据、放置病毒、得到阁下的电子邮件地址或偷窃有关阁下身份的敏感信息;然而,HTTP Cookie 可用来跟踪阁下在特定网站上的所到之处。不使用 cookie 就很难进行网站跟踪。
至于其他一切与因特网有关的事,如同阁下所希望的那样是匿名的。没有网站知道阁下是谁,除非阁下自己透露给网站。同时,cookie 只是为了更好地了解使用模式并改进网站访客的效率而采用的一个网站跟踪统计手段而已。
如果网站设计师旨在使网页能与访客更具互动作用,或者若设计师计划让访客自定义网站的外观,则就需要使用 cookie。而且,如果阁下想要网站在某些情况下改变其外观,cookie 则提供了一条快速、容易的途径,让阁下的 HTML 页面按需要而改变。最新型的服务器使用 cookie 有助于数据库的互动性,进而改进网站的整体互动性。
简介
适用对象:初级读者
Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网 页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你 不用输入ID、密码就直接登录等。你可以在IE的“工具/Internet选项”的“常规”选项卡中,选择“设置/查看文件”,查看所有保存到你电脑里的 Cookie。这些文件通常是以user@domain格式命名的,user是你的本地用户名,domain是所访问的网站的域名。如果你使用 NetsCape浏览器,则存放在“C:PROGRAMFILESNETSCAPEUSERS”里面,与IE不同的是,NETSCAPE是使用一 个Cookie 文件记录所有网站的Cookies。
为了保证上网安全我们需要对Cookie进行适当设置。打开“工具/Internet选项”中的“隐私”选项卡(注 意该设置只在IE6.0中存在,其他版本IE可以在“工具/Internet选项”的“安全”标签中单击“自定义级别”按钮,进行简单调整),调整 Cookie的安全级别。通常情况,可以将滑块调整到“中高”或者“高”的位置。多数的论坛站点需要使用Cookie信息,如果你从来不去这些地方,可以 将安全级调到“阻止所有Cookies”。如果只是为了禁止个别网站的Cookie,可以单击“”按钮,将要屏蔽的网站添加到列表中。在“高级”按钮 选项中,你可以对第一方Cookie和第三方的Cookie进行设置,第一方Cookie是你正在浏览的网站的Cookie,第三方Cookie非正在浏 览的网站发给你的Cookie,通常要对第三方Cookie选择“拒绝”,如图1。你如果需要保存Cookie,可以使用IE的“导入导出”功能,打开 “文件/导入导出”,按提示操作即可。
Cookie中的内容大多数经过了加密处理,因此在我们看来只是一些毫无意义的字母数字组合,只有服务器的CGI处 理程序才知道它们真正的含义。通过一些软件我们可以查看到更多的内容,使用Cookie Pal软件查看到的Cookie信息,如图2所示。它为我们提供了Server、Expires、Name、value等选项的内容。其中,Server 是存储Cookie的网站,Expires记录了Cookie的时间和生命期,Name和value字段则是具体的数据。
Cookie的传递流程
适用对象:中级读者
当在浏览器地址栏中键入了Amazon的URL,浏览器会向Amazon发送一个读取网页的请求,并将结果在显示器上显示。这时该网页在你的电脑上寻找Amazon网站设置的Cookie文件,如果找到,浏览器会把Cookie文件中的数据连同前面输入的URL一同发送到Amazon服务器。 服务器收到Cookie数据,就会在他的数据库中检索你的ID,你的购物记录、个人喜好等信息,并记录下新的内容,增加到数据库和Cookie文件中去。 如果没有检测到Cookie或者你的Cookie信息与数据库中的信息不符合,则说明你是第一次浏览该网站,服务器的CGI程序将为你创建新的ID信息, 并保存到数据库中。
Cookie是利用了网页代码中的HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递,例如,浏览器的打开或刷新网页操作。服务器将Cookie添加到网页的HTTP头 信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑中的Cookie设置选择是否保存这些数据。如果浏览器不允许Cookie保存,则关掉浏览器 后,这些数据就消失。Cookie在电脑上保存的时间是不一样的,这些都是由服务器的设置不同决定的。Cookie有一个Expires(有效期)属性, 这个属性决定了Cookie的保存时间,服务器可以通过设定Expires字段的数值,来改变Cookie的保存时间。如果不设置该属性,那么 Cookie只在浏览网页期间有效,关闭浏览器,这些Cookie自动消失,绝大多数网站属于这种情况。通常情况下,Cookie包含Server、 Expires、Name、value这几个字段,其中对服务器有用的只是Name和value字段,Expires等字段的内容仅仅是为了告诉浏览器如 何处理这些Cookies。
Cookie的编程实现
适用对象:高级读者
多数网页编程语言都提供了对Cookie的支持。如javascript、VBScript、Delphi、ASP、SQL、PHP、C#等。在这些面向对象的编程语言中,对Cookie的编程利用基本上是相似的,大体过程为:先创建一个Cookie对象(Object),然后利用控制函数对Cookie进行赋值、读取、写入等操作。那么如何通过代码来获取其他用户Cookie中的敏感信息,下面进行简单的介绍。
该方法主要有两步,首先要定位你需要收集Cookie的网站,并对其进行分析,并构造URL;然后编制收集Cookie的PHP代码,并将其放到你可以控制的网站上,当不知情者单击了你构造的URL后可以执行该PHP代码。下面我们看具体的实现过程。
-
分析并构造URL
首先打开我们要收集Cookie的网站,这里假设是登陆网站输入用户名“”(不含引号),对数据进行分析就是你能够控制的某台主机上的一个脚本。需要注意的是“%2B”为符号“+”的URL编码,因为“+”将被作为空格处理。该URL就可以在论坛中发布,诱使别人点击了。
-
编制PHP脚本221
该脚本的作用就是收集Cookie文件,具体内容如下:
$info = getenv("QUERY_STRING";
if ($info) {
$fp = fopen("info.txt","a";
fwrite($fp,$info." ";
fclose($fp);
}
>
Cookie的安全问题
适用对象:所有希望上网安全的读者
-
Cookie欺骗
Cookie记录着用户的帐户ID、密码之类的信息,如果在网上传递,通常使用的是MD5方法 加密。这样经过加密处理后的信息,即使被网络上一些别有用心的人截获,也看不懂,因为他看到的只是一些无意义的字母和数字。然而,遇到的问题是,截获 Cookie的人不需要知道这些字符串的含义,他们只要把别人的Cookie向服务器提交,并且能够通过验证,他们就可以冒充受害人的身份,登陆网站。这 种方法叫做Cookie欺骗。Cookie欺骗实现的前提条件是服务器的验证程序存在漏洞,并且冒充者要获得被冒充的人的Cookie信息。网站的验证程 序要排除所有非法登录是非常困难的,例如,编写验证程序使用的语言可能存在漏洞。而且要获得别人Cookie是很容易的,用支持Cookie的语言编写一 小段代码就可以实现(具体方法见三),只要把这段代码放到网络里,那么所有人的Cookie都能够被收集。如果一个论坛允许HTML代码或者允许使用 Flash标签就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可以收集到大量的 Cookie。在论坛上,有许多人的密码就被这种方法盗去的。至于如何防范,还没有特效药,我们也只能使用通常的防护方法,不要在论坛里使用重要的密码, 也不要使用IE自动保存密码的功能,以及尽量不登陆不了解底细的网站。
-
Flash的代码隐患
Flash中有一个getURL()函数,Flash可以利用这个函数自动打开指定的网页。因此它可能把你引向一个包含恶意代码的网站。打个比方,当你在自己电脑上欣赏精美的Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面。这个页面可以收集你的Cookie、也可以做一些其他的事情,比如在你的机器上种植木马甚至格式化你的硬盘等等。对于Flash的这种行为,网站是无法禁止的,因为这是Flash文件的内部行为。我们所能做到的,如果是在本地浏览尽量打开防火墙,如果防火墙提示的向外发送的数据包并不为你知悉,最好禁止。如果是在Internet上欣赏,最好找一些知名的大网站。
Cookie是怎样工作的?
要了解Cookie,必不可少地要知道它的工作原理。一般来说,Cookie通过HTTP Headers从服务器端返回到浏览器上。
首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie ,然后,浏览器在它的请求中通过Cookie header包含这个已经创建的Cookie,并且把它返回至服务器,从而完成浏览器的论证。
例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的 Header如下面所示,这里假设访问者的注册名是“Michael Jordan”,同时还对所创建的Cookie的属性如pathdomain、expires等进行了指定。
expires=Monday,01-Mar-99 00:00:01 GMT
上面这个Header会自动在浏览器端计算机的Cookie文件中添加一条记录。浏览器将变量名为“login”的 Cookie赋值为“Michael Jordon”。注意,在实际传递过程中这个Cookie的值是经过了URLEncode方法的URL编码操作的。这个含有Cookie值的HTTP Header被保存到浏览器的Cookie文件后,Header就通知浏览器将Cookie通过请求以忽略路径的方式返回到服务器,完成浏览器的认证操 作。
此外,我们使用了Cookie的一些属性来限定该Cookie的使用。例如Domain属性能够在浏览器端对 Cookie发送进行限定,具体到上面的例子,该Cookie只能传送到指定的服务器上,而决不会跑到其他的Web站点上去。Expires属性则指定了 该Cookie保存的时间期限,例如上面的Cookie在浏览器上只保存到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径下。
说明:浏览器创建了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。
上一部分讲了有关Cookie的技术背景,这部分来说说在PHP里如何设置、使用、删除Cookie,及Cookie的一些限制。PHP对Cookie支持是透明的,用起来非常方便。
如何设置
相关函数
PHP用SetCookie函数来设置Cookie。必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用Cookie函数。SetCookie 函数定义了一个Cookie,并且把它附加在HTTP头的后面,SetCookie函数的原型如下:
int SetCookie(string name,string value,int expire,string path,string domain,int secure);
除了name之外所有的参数都是可选的。value,path,domain 三个参数可以用空字符串代换,表示没有设置;expire和 secure两个参数是数值型的,可以用0表示。expire参数是一个标准的Unix时间标记,可以用time()或mktime() 函数取得,以秒为单位。secure参数表示这个Cookie是否通过加密的HTTPS协议在网络上传输。当前设置的Cookie 不是立即生效的,而是要等到下一个页面时才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把 Cookie从客户的机器里取出传回服务器的原因。在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个, 你必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。
使用举例
来看几个例子:
简单的:
SetCookie("MyCookie","Value of MyCookie");
带失效时间的:
SetCookie("WithExpire","Expire in 1 hour",time()+3600);//3600秒=1小时
什么都有的:
这里还有一点要说明的,比如你的站点有几个不同的目录,那么如果只用不带路径的Cookie的话,在一个目录下的页 面里设的Cookie在另一个目录的页面里是看不到的,也就是说,Cookie是面向路径的。实际上,即使没有指定路径,WEB 服务器会自动传递当前的路径给浏览器的,指定路径会强制服务器使用设置的路径。解决这个问题的办法是在调用SetCookie时加上路径和域名,域名的格 式可以是SetCookie函数里表示value的部分,在传递时会自动被encode,也就是说,如果value的值是“test value”在传递时就变成了“test%20value”,跟URL的方法一样。当然,对于程序来说这是透明的,因为在PHP接收Cookie的值时会 自动将其decode。
如果要设置同名的多个Cookie,要用数组,方法是:
SetCookie("CookieArray[]","Value 1");
SetCookie("CookieArray[]","Value 2");
或
SetCookie("CookieArray[0]","Value 1");
SetCookie("CookieArray[1]","Value 2");
接收和处理Cookie
PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组同样适用。
另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)
echo $MyCookie;
echo $CookieArray[0];
echo count($CookieArray);
echo $HTTP_COOKIE_VARS["MyCookie"];
就这么简单。
如何导出
在Windows XP系统中利用“导入/导出向导”可以方便地导出Cookie信息,方法如下:
第1步,打开“导入/导出向导”并单击“下一步”按钮,在打开的“导入/导出选择”向导页中选中“导出Cookie”选项,并单击“下一步”按钮。
第2步,在打开的“导出Cookie目标”向导页中,单击“浏览”按钮指定合适的位置和文件名,并单击“下一步”按钮。
第3步,打开“正在完成导入/导出向导”向导页,单击“完成”按钮开始导出操作。导出成功后会给出提示,单击“确定”按钮即可。[6]
如何删除
第一个是:新建一个有相同name名称的cookie,把value值设为空,然后设置它生存时间为0
比如要删除一个名叫username的cookie:
Cookie
c=new
Cookie("username","");
c.setMaxAge(0);
response.addCookie(c);
第二个是*(vista中):在桌面按F1,弹出帮助, 输入cookie,选择 删除Internet cookie,弹出 "Internet 选项",在 浏览记录 一栏里选择 “删除”,然后弹出删除的内容(包括临时文件,表单记录等),选择 删除cookie,即可。
此法,适用于各种浏览器,包括360,遨游,闪游,火狐,世界之窗等。
IE浏览器
-
在打开的下拉列表中点击“Internet选项”。
-
在打开的弹出菜单中点击"删除按钮"。
-
选中"Cookie 和网站数据",其它项可以不选中,再点击下面的删除按钮。等待约10秒钟左右,就会出现删除成功的提示。
flash
-
在打开的“控制面板”中点击 “Flash Player”。
-
在打开的"flash player 设置管理器"中选择"存储",再点击"全部删除"按钮。
-
最后选中“删除所有站点数据和设置”,然后点击“删除数据”按钮就即可。
PHP Cookies
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。[7]
创建 Cookie
注释:setcookie() 函数必须位于 <html> 标签之前。
语法:
setcookie(name, value, expire, path, domain);
在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:
1 2 3 4 5 6 |
|
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)
取回 Cookie 值
PHP
的 $_COOKIE
变量用于取回 cookie
的值。[7]
在下面的实例中,我们取回了名为
"user"
的 cookie
的值,并把它显示在了页面上:
1 2 3 4 5 6 7 |
|
在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
删除 Cookie
当删除 cookie 时,您应当使过期日期变更为过去的时间点。[7]
删除的实例:
1 2 3 4 |
|
JavaScript Cookies
在这个例子中我们要创建一个存储访问者名字的
cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于
cookie
中。当访问者再次访问网站时,他们就会收到欢迎词。
首先,我们会创建一个可在
cookie
变量中存储访问者姓名的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
上面这个函数中的参数存有
cookie
的名称、值以及过期天数。
在上面的函数中,我们首先将天数转换为有效的日期,然后,我们将
cookie
名称、值及其过期日期存入
document.cookie
对象。
之后,我们要创建另一个函数来检查是否已设置
cookie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
上 面的函数首先会检查
document.cookie
对象中是否存有 cookie。假如
document.cookie
对象存有某些 cookie,那么会继续检查我们指定的
cookie
是否已储存。如果找到了我们要的
cookie,就返回值,否则返回空字符串。
最后,我们要创建一个函数,这个函数的作用是:如果
cookie
已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
这是所有的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
|
在jsp中
jsp中使用cookie完成状态管理:
cookie也算http消息报头的一部分,它的作用有以下方面:
一 记录访客的某些信息。例如可以利用cookie记录用户光临的网页次数,或者访客曾经输入过的信息。某些网站可以自动记录用户上次登录的用户名,用的就是cookie。
二 页面之间传递变量。浏览器并不会保存当前页面上任何变量的信息,当页面被关闭时,页面上的所有变量信息将随之消失。
使用举例
在jsp中创建简单的cookie:
String cookiename="visitTimes";
Cookie cookie=new Cookie(cookiename,"1");
-
setMaxAge(10*60);//设置cookie存活期
-
addCookie(cookie);//将cookie写入客户端
在jsp中处理cookie数据的常用方法:
getDomain();返回cookie的域名.
getMaxAge();返回cookie的存活时间
getName();返回cookie的名字
getPath();返回cookie适用的路径
getSecure();如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值
getValue();返回cookie的值
getVersion();返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释
setPath(String url);设置Cookie的适用路径
setSecure(Boolean flag);设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或ssl
setValue(String newvalue);cookie创建后设置一个新的值
setVersion(int v);设置cookie所遵从的协议版本。
替代品
鉴于cookie的局限和反对者的声音,有如下一些替代方法:
Brownie方案,是一项开放源代码工程,由SourceForge发起。Brownie曾被用以共享在不同域中的接入,而cookies则被构想成单一域中的接入。这项方案已经停止开发。
P3P,用以让用户获得更多控制个人隐私权利的协议。在浏览网站时,它类似于cookie。
在与服务器传输数据时,通过在地址后面添加唯一查询串,让服务器识别是否合法用户,也可以避免使用cookie。
隐私泄漏
跨站Cookie
实际上,Cookie中保存的用户名、密码等个人敏感信息通常经过加密,很难将其反向破解。但这并不意味着绝对安 全,黑客可通过木马病毒盗取用户浏览器Cookie,直接通过偷取的Cookie骗取网站信任。可以看出,木马病毒入侵用户电脑是导致用户个人信息泄露的 一大元凶。
自1993年Cookie诞生以来,其就拥有专属性原则,即A网站存放在Cookie中的用户信息,B网站是没有权 限直接获取的。但是,一些第三方广告联盟的代码使用范围很广。这就造成用户在A网站搜索了一个关键字,用户继续访问B网站,由于B网站也使用了同一家的第 三方广告代码,这个代码可以从Cookie中获取用户在A网站的搜索行为,进而展示更精准的推广广告。比如搜索“糖尿病”等关键词,再访问其联盟网站,页 面会立刻出现糖尿病治疗广告。如果并未事先告之,经用户同意,此做法有对隐私构成侵犯的嫌疑。这个还处在灰色地带。
因此,跨站Cookie恰恰就是用户隐私泄露的罪魁祸首,所以限制网站使用跨站Cookie,给用户提供禁止跟踪 (DNT)功能选项已成为当务之急。据了解,IE、Chrome、360、搜狗等浏览器均可以快速清除用户浏览器网页的Cookie信息。但从整体的隐私 安全保护环境来看,安全软件仍然存在着巨大的防护缺口。所以安全软件也可以并且有必要提供定期清理网站Cookie,并监测跨站Cookie使用的功能, 保护用户隐私安全。[9]
超级Cookies
英国伦敦的一名软件开发者已发现了一串代码,能在浏览器的隐私模式中执行普通会话,这将导致隐私模式的失效。
目前,所有主流浏览器都提供了隐私保护模式。在这种模式下,网站的Cookies无法追踪用户身份。例如,谷歌Chrome浏览器提供了名为“Incognito”的功能,而火狐浏览器则提供了“隐私窗口”功能。
不过,新发现的这一漏洞将导致浏览器隐私模式的失效。例如,当用户使用普通浏览器,在亚马逊网站上购物或浏览 Facebook时,用户可能会启动一个隐私窗口,去浏览存在争议内容的博客。如果这一博客使用了与亚马逊同样的广告网络,或是集成了Facebook的 “点赞”按钮,那么广告主和Facebook可以知道,用户在访问亚马逊和Facebook的同时也访问了这一争议博客。
对于这一漏洞,用户有一个临时解决办法,但是比较麻烦:用户可以在启动隐私模式之前删除所有Cookies文件,或者使用一个专门的浏览器,完全在隐私模式下进行浏览。讽刺的是,这一漏洞是由于一项旨在加强隐私保护的功能所引起的。
如果用户在浏览器地址栏使用前缀https://,为某些网站的通信加密,那么一些浏览器会对此进行记忆。浏览器会保存一个“超级Cookie”,从而确保当用户下次连接该网站时,浏览器会自动进入https通道。即使用户启用了隐私模式,这一记忆仍会存在。
与此同时,这样的超级Cookie也允许第三方网络程序,例如广告和社交媒体按钮,对用户进行记忆。
发现这一漏洞的独立研究员萨姆·格林哈尔(Sam Greenhelgh)在博客中表示,这种功能还没有被任何公司所使用。不过在这种方式被公开之后,没有任何办法去阻止各家公司这样做。
在线隐私软件公司Abine联合创始人尤金·库兹涅佐夫(Eugene Kuznetsov)认为,这种“超级Cookie”将成为下一代追踪工具。这种工具脱胎于Cookies,但变得更加复杂。目前,用户在浏览过程中总是 会存在设备唯一识别码,以及具有唯一性的浏览器指纹,这些痕迹很难被擦除。
由于“超级Cookie”的存在,互联网匿名性变得更加困难。库兹涅佐夫表示:“我们已经看到了关于隐私保护的军备 竞赛。追踪互联网用户的愿望就像是寄生虫。你浏览器中的任何内容都在被网站和广告主审视,从而实现更多的追踪。”Mozilla已经在最新版火狐浏览器中 对此进行了修复,而谷歌则倾向于使Chrome维持原状。谷歌已经知道了“超级Cookie”带来的问题,但仍选择继续启用Chrome的https记忆 功能。在安全性和隐私保护之间,谷歌选择了前者。
微软IE浏览器并不存在这样的问题,因为这款浏览器并未内建https记忆功能。格林哈尔还表示,在iOS设备上,“超级Cookie”带来的问题同样存在。[10]
简介
关于为何取名为cookie有多种说法。有人说cookie可能源自海外中国餐馆在客人用完餐离开前向客人所赠“幸 运小饼干”,里面都有一张小字条,印有一张让客人开心一笑的警句之类的吉祥话,有的还煞有其事的描绘客人的个性特点,为客人卜算前程。想必这也算个人化的 信息吧。然而许多人怀疑这种“幸运小饼干”给网上用户带来的未必是好运,因为它窥探用户的隐私使人如芒在背,感到不安。如果你想知道你电脑中的“小饼干” 记录了你哪些资料,不妨打开你的电脑硬盘浏览器目录中的“小饼干”文件看一下。
Cookies一词用在程序设计中是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘 读取数据的一种技术。从本质上讲,它可以看作是你的身份证。保存的信息片断以"名/值"对(name-value pairs)的形式储存,一个"名/值"对仅仅是一条命名的数据。
一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其 它任何东西。 Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。
由于Cookies是我们浏览的网站传输到用户计算机硬盘中的文本文件或内存中的数据,因此它在硬盘中存放的位置与 使用的操作系统和浏览器密切相关。在Windows 9X系统计算机中,Cookies文件的存放位置为C:/Windows/Cookies,在Windows NT/2000/XP的计算机中,Cookies文件的存放位置为C:/Documents and Settings/用户名/Cookies,在Windows Vista/7的计算机中,Cookies文件的存放位置为C:UsersuserAppDataRoamingMicrosoft WindowsCookiesLow。
硬盘中的Cookies文件可以被Web浏览器读取,它的命令格式为:用户名@网站地址[数字].txt。如笔者计算机中的一个Cookies文件名为:ch@163[1].txt。要注意的是:硬盘中的Cookies属于文本文件,不是程序。
设置
你可以在IE的"工具/Internet选项"的"常规"选项卡中,选择"设置/查看文件",查看所有保存到你电脑 里的Cookies。这些文件通常是以user@domain格式命名的,user是你的本地用户名,domain是所访问的网站的域名。如果你使用 NetsCape浏览器,则存放在"C:/PROGRAMFILES/NETS- CAPE/USERS/"里面,与IE不同的是,NETSCAPE是使用一个Cookie文件记录所有网站的Cookies。
我们可对Cookie进行适当设置:打开"工具/Internet选项"中的"隐私"选项卡(注意该设置只在 IE6.0中存在,其他版本IE可以单击"工具/Internet选项" "安全"标签中的"自定义级别"按钮,进行简单调整),调整Cookie的安全级别。通常情况,可以调整到"中高"或者"高"的位置。多数的论坛站点需要 使用Cookie信息,如果你从来不去这些地方,可以将安全级调到"阻止所有Cookies";如果只是为了禁止个别网站的Cookie,可以单击"编 辑"按钮,将要屏蔽的网站添加到列表中。在"高级"按钮选项中,你可以对第一方Cookie和第三方的Cookie进行设置,第一方Cookie是你正在 浏览的网站的Cookie,第三方Cookie是非正在浏览的网站发给你的Cookie,通常要对第三方Cookie选择"拒绝"。你如果需要保存 Cookie,可以使用IE的"导入导出"功能,打开"文件/导入导出",按提示操作即可。
写入与读取
Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request。
用于给客户机发送Cookies的语法通常为:
当给不存在的Cookies集合设置时,就会在客户机创建,如果该Cookies己存在,则会被代替。由于Cookies是作为HTTP传输的头信息的一部分发给客户机的,所以向客户机发送Cookies的代码一般放在发送给浏览器的HTML文件的标记之前。
如果用户要读取Cookies,则必须使用Request对象的Cookies集合,其使用方法是: 需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所 下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。
应用
几乎所有的网站设计者在进行网站设计时都使用了Cookie,因为他们都想给浏览网站的用户提供一个更友好的、人文化的浏览环境,同时也能更加准确地收集访问者的信息。
网站浏览人数管理
由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。使用Cookie,网站可以完成以下工作:测定多少人访问过;测定访问者中有多少是新用户(即第一次来访),多少是老用户;测定一个用户多久访问一次网站。
通常情况下,网站设计者是借助后台数据库来实现以上目的的。当用户第一次访问该网站时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数或判断用户是新用户还是老用户。
按照用户的喜好定制网页外观
有的网站设计者,为用户提供了改变网页内容、布局和颜色的权力,允许用户输入自己的信息,然后通过这些信息对网站的一些参数进行修改,以定制网页的外观。
在电子商务站点中实现诸如"购物篮"等功能
可以使用Cookie记录用户的ID,这样当你往"购物篮"中放了新东西时,网站就能记录下来,并在网站的数据库里对应着你的ID记录当你"买单"时,网站通过ID检索数据库中你的所有选择就能知道你的"购物篮"里有些什么。
在一般的事例中,网站的数据库能够保存的有你所选择的内容、你浏览过的网页、你在表单里填写的信息等;而包含有你的唯一ID的Cookie则保存在你的电脑里。
缺陷
Cookie虽然被广泛的应用,并能做到一些使用其它技术不可能实现的功能。但也存在一些不够完美的方面,给应用带来不便。
多人共用一台电脑的问题
任何公共场合的电脑或者许多在办公室或家里使用的电脑,都会同时被两个以上的人使用。这样,当你用它在网上超市购物时,网上超市或网站会在这台机器上留下一个Cookie,将来也许就会有某个人试图使用你的账户购物,带来了不安全的可能。当然,在一些使用多用户操作系统如Windows NT或UNIX的电脑上,这并不会成为一个问题。因为在多用户操作系统下不同的账户的Cookie分别放在不同的地方。
Cookies被删除时
假如你的浏览器不能正常工作,你可能会删除电脑上所有的临时Internet文件。然而,一旦这样操作以后,你就会 丢掉所有的Cookies文件。当你再次访问一个网站时,网站会认为你是一位新用户并分配给你一个新的用户ID以及一个新的Cookie。结果将会造成网 站统计的新老用户比发生偏差,而你也难以恢复过去保存的参数选择。
一人使用多台电脑时
有的人一天之中经常使用一台以上的电脑。例如在办公室里有一台电脑、家里有一台、还有移动办公用的笔记本电脑。除非 网站使用了特别的技术来解决这一问题,否则,你将会有三个不同的Cookies文件在这三台机器上,而在三台机器上访问过的任何网站都将会把你看成三个不 同的用户。
PHP Cookies
cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。[1]
如何创建 Cookie?
注释:setcookie() 函数必须位于 <html> 标签之前。
语法:
setcookie(name, value, expire, path, domain);
在下面的例子中,我们将创建名为 "user" 的 cookie,并为它赋值 "Alex Porter"。我们也规定了此 cookie 在一小时后过期:
1 2 3 4 5 6 |
|
注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)
如何取回 Cookie 的值?
PHP 的 $_COOKIE 变量用于取回 cookie 的值。[1]
在下面的实例中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:
1 2 3 4 5 6 7 |
|
在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
如何删除 Cookie?
当删除 cookie 时,您应当使过期日期变更为过去的时间点。[1]
删除的实例:
1 2 3 4 |
|
防范泄密
想知道你访问的网站是否在你的硬盘或内存中写入了Cookies信息吗?只需执行下面的操作步骤,就可以了解和控制你正在访问的网站的Cookies信息。
步骤一 点击IE窗口中的"工具" "Internet选项",打开"Internet选项"设置窗口;
步骤二 点击"Internet选项"设置窗口中的"安全"标签,然后再点击"自定义级别"按钮,进入"安全设置"窗口;
步骤三 找到"安全设置"窗口中的"Cookies"设置项。"Cookies"设置项下有两个分选项,其中"允许使用存储在您计算机上的Cookies"是针对 存储在用户计算机硬盘中的Cookies文件;"允许使用每个对话Cookies(未存储)"是针对存储在用户计算机内存中的Cookies信息。存储在 硬盘中的Cookies文件是永久存在的,而存储在内存中的Cookies信息是临时的。要想IE在即将接收来自Web站点的所有Cookies时进行提 示,可分别选择上面两个分选项中的"提示"项。当然,你也可以选择"启用",允许IE接受所有的Cookies信息(这也是IE的默认选项);选择"禁 止",则是不允许Web站点将Cookies存储到您的计算机上,而且Web站点也不能读取你计算机中已有的Cookies。
IE6.0提供了更为可靠的个人隐私及安全保护措施,可以让用户来控制浏览器向外发送信息的多少。在"Internet 选项"窗口中新增了"隐私"选项卡(图1),用户可以在其中直接设置浏览时的隐私级别,按需要控制其他站点对自己电脑所使用的Cookies。
如果我们正在浏览的站点使用了Cookie,那么在浏览器状态栏中会有一个黄色惊叹号的标记,双击后可打开"隐私报告"对话框,用户可以在其中查看具体的隐私策略,还可直接点击"设置"按钮后在上述"隐私"选项卡中调节安全隐私级别。
在"常规"选项卡中还增加了"删除Cookies"按钮(图2),方便用户直接清除本机上的Cookies。另外,在"工具" "选项" "高级"选项卡中也增加了一些进一步提高安全性的选项(如关闭浏览器时清空Internet临时文件)。其实,如何更好地保护个人隐私和安全是微软下一代".NET"战略软件中的关键技术,IE6.0已经尝试着迈出了第一步。
另外,由于Cookies的信息并不都是以文件形式存放在计算机里,还有部分信息保存在内存里。比如你在浏览网站的时候,Web服务器会自动在内存中生成Cookie,当你关闭IE浏览器的时候又自动把Cookie删除,那样上面介绍的两种方法就起不了作用,我们需要借助注册表器来修改系统设置。要注意的是,修改注册表前请作备份,以便出现问题后能顺利恢复。
运行Regedit,找到如下键值:HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Internet Settings/Cache/Special Paths/Cookies,这是Cookies在内存中的键值,把这个键值删除。至此Cookies无论以什么形式存在,我们都不用再害怕了。
最后有必要说明的一点是:杜绝Cookies虽然可以增强你电脑的信息安全程度,但这样做同样会有一些弊端。比如在一些需要Cookies支持的网页上,会发生一些莫名其妙的错误,典型的例子就是你以后不能使用某些网站的免费信箱了。
欺骗
通过分析Cookie的格式,我们知道,最后两项中分别是它的URL路径和域名,服务器对Cookie的识别靠的就是这两个参数。正常情况下,我们要浏览一个网站时输入的URL便是它的域名,需要经过域名管理系统DNS将其转化为IP地址后进行连接。若能在DNS上进行一些设置,把目标域名的IP地址对应到其它站点上,我们便可以非法访问目标站点的Cookie了。
要进行Cookies欺骗,其实很简单。比如在Win9X下的安装目录下,有一名为hosts.sam的文件,以文本方式打开后会看到这样的格式:
127.0.0.1localhost
经过设置,便可以实现域名解析的本地化,只需将IP和域名依上面的格式添加到文件中并另存为hosts即可。hosts文件实际上可以看成一个本机的DNS系统,它可以负责把域名解释成IP地址,它的优先权比DNS服务器要高,它的具体实现是TCP/IP协议中的一部分。
总之,在某种程度上虽然可以实现Cookies的欺骗,给网络应用带来不安全的因素,但Cookies文件本身并不会造成用户隐私的泄露,也不会给黑客提供木马程序的载体,只要合理使用,它们会给网站管理员进行网站的维护和管理以及广大用户的使用都带来便利。
集合的属性
1.Expires属性:此属性用来给Cookies设置一个期限,在期限内只要打开网页就可以调用被保存的Cookies,如果过了此期限Cookies就自动被删除。如:
设定Cookies的有效期到2004年4月1日,到时将自动删除。如果一个Cookies没有设定有效期,则其生命周期从打开浏览器开始,到关闭浏览器结束,每次运行后生命周期将结束,下次运行将重新开始。
2.Domain属性:这个属性定义了Cookies传送数据的唯一性。若只将某Cookies传送给_blank">搜狐主页时,则可使用如下代码:
3.Path属性:定义了Cookies只发给指定的路径请求,如果Path属性没有被设置,则使用应用软件的缺省路径。
4.Secure属性:指定Cookies能否被用户读取。
5.Haskeys属性:如果所请求的Cookies是一个具有多个键值的Cookies字典,则返回True,它是一个只读属性
偷窃和脚本攻击
尽管cookies没有病毒那么危险,但它仍包含了一些敏感信息:用户名,计算机名,使用的浏览器和曾经访问的网站。用户不希望这些内容泄漏出去,尤其是当其中还包含有私人信息的时候。
这并非危言耸听,一种名为Cross site scripting的工具可以达到此目的。在受到Cross site scripting攻击时,cookie盗贼和cookie毒药将窃取内容。一旦cookie落入攻击者手中,它将会重现其价值。
cookie盗贼:搜集用户cookie并发给攻击者的黑客。攻击者将利用cookie信息通过合法手段进入用户帐户。
cookie毒药:利用安全机制,攻击者加入代码从而改写cookie内容,以便持续攻击。
替代品
鉴于cookie的局限和反对者的声音,有如下一些替代方法:
Brownie方案,是一项开放源代码工程,由SourceForge发起。Brownie曾被用以共享在不同域中的接入,而cookies则被构想成单一域中的接入。这项方案已经停止开发。
P3P,用以让用户获得更多控制个人隐私权利的协议。在浏览网站时,它类似于cookie。
在与服务器传输数据时,通过在地址后面添加唯一查询串,让服务器识别是否合法用户,也可以避免使用cookie。
使用和禁用
用户可以改变浏览器的设置,以使用或者禁用Cookies
微软 Internet Explorer
工具 > Internet选项 > 隐私页
调节滑块或者点击“高级”,进行设置。
Mozilla Firefox
工具 > 选项 > 隐私
(注:在Linux版本中,可能会是如下操作: > 属性 > 隐私 , 而Mac则是:Firefox > 属性 > 隐私)
设置Cookies选项
设定阻止/允许的各个域内Cookie
查看Cookies管理窗口,检查现存Cookie信息,选择删除或者阻止它们
苹果计算机 Safari
Safari > 预置 > 安全标签
选择以下的选项
总是 接受 Cookies
永不 接受 Cookies
接受 Cookies 仅从您浏览的站点 (例如,不接受来自其它站点的广告) 预设的选项。
您可以显示所有驻留在您浏览器中的 cookies,也可随时将它们之一删除。
NETSCAPE
“PREFERENCEADVANCEDCOOKIES”,在出现的窗口中有三个选项,选择 “DISABLECOOKIES”即可关闭COOKIE。在IE中,选择“查看”/“INTERNET选项”/“高级",在随后出现的窗口中找到 “COOKIES”一项,选择“禁止所有的COOKIE 使用”可关闭COOKIE。
如果没有设置cookie列表,请记住在域名前面加入“。”
识别功能
如果在一台计算机中安装多个浏览器,每个浏览器都会以独立的空间存放cookie。因为cookie中不但可以确认 用户,还能包含计算机和浏览器的信息,所以一个用户用不同的浏览器登录或者用不同的计算机登录,都会得到不同的cookie信息,另一方面,对于在同一台 计算机上使用同一浏览器的多用户群,cookie不会区分他们的身份,除非他们使用不同的用户名登录。Cookies是一种能够让网站服务器把少量数据储 存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。
谣言
谣言:Cookies在暗中监视你的一举一动
就像我们知道的一样,Cookies的内容是你所访问的网站所存储的。所以,除非你主动将你的信息给某个网站,或你早已把个人信息给这个网站,否则Cookies中不可能包含你的私人信息。
大多数的Cookies都像会话标记一样简单,但有时它包含你的登陆证书,其通常被加密或为一定格式的散列值。因为Cookies只会发送回和其产生时相同的网站,就算它包含了一些私人信息,这些信息也不会和所有你访问的网站共享。
谣言:Cookies是病毒或间谍软件
Cookies仅仅是一些文本文件而已,它并不能够被执行,甚至你可以在隐藏文件夹中找到它们。但令人惊讶的是居然
有许多人认为Cookies包含病毒或间谍软件。其主要原因不仅是受愚蠢的电视媒体的错误认识所影响,也可能因为大多数反间谍软件在扫描时都会捕获跟踪
Cookies。这是为什么呢?因为从Cookies会被广告网站用于跟踪、分析你访问过的网站,所以大多数反间谍软件帮助你移除它们。
另一个谣言是Cookies导致了垃圾邮件、广告弹出窗口。广告提供商可以使用Cookies的信息决定给你推送哪些广告,但是Cookies自己本身无法产生广告。
事实
事实:几乎登陆所有网站都要用到Cookies
绝大多数网站都要求启用Cookies,这是为了让你创建的账号可以保持登陆状态。因此,如果你禁用 Cookies,绝大多数的网站都将无法使用。但是有一些网站另外,你可能已经注意到,一些购物网站将会话标志嵌入到超链接(URL)中,这些网站在禁用 Cookies时仍然可以使用,但这并不意味着所有网站都实现了这一功能。这些Cookies被称为第一方Cookies,因为它们在你主动访问一个网站 时被记录。
事实:Cookies被广告提供商利用
因为Cookies总是发回给产生它的原始站点,所以广告提供商的Cookies将会被发回给使用这个广告提供商的所有网站。这让广告提供商可以跟踪你访问的网站,从而基于你访问网站的类型,给你发送针对性的广告。
但这并不意味着广告提供商可以读取所有你访问过网站的Cookies,他们仅仅可以访问他们自己的存储的Cookies而已。但是因为广告的
Javascript代码是嵌入到页面中的,故提供商将会知道你访问了这个页面。这些Cookies被称为第三方Cookies,因为它们并不是被你真正
访问的页面存储,而且他们通常可以被拦截,而不会产生任何严重的问题。
如果这种类型的最终让你寝食难安,那么你需要知道其实广告提供商早已可
以根据你的IP地址、浏览器版本、地点等因素跟踪你所访问的网站。所以摆脱跟踪Cookies仅仅消除了网上行为被跟踪的一小部分困扰。而且仅仅只有一小
部分足够大的广告提供商会跟踪你访问过的网站,可以说Google已经知道任何你在网络上做的事情。
事实:删除禁用Cookies会带来更多广告
如果你并不经常访问一个网站,你可能会看到一个插播广告挡住了整个页面,除非你点击它,不然它不会关闭。你可能会想如何规定谁会看到这些广告,什么时候会看到这些广告。
它们是这样工作的:挡住整个页面的插播广告需要支付高额的广告费用,但是因为大多数网站所有者都知道这种广告太令人讨厌了,所以它们通常会按照一定比例
限制其出现的频率,所以同一个人并不会经常看到这种广告。当你看到一次这种广告时,广告提供商会在你的电脑上存储Cookies,确保在一段时间内你不会
再次看到这个讨厌的广告。如果你定期清理Cookies,你可能会比其他人更加频繁的看到这种插播广告。当然,这是在你没有安装广告拦截器的情况下。
事实:禁用Cookies不禁用Flash不起任何作用
即使你禁用浏览器Cookies,广告提供商利用Flash Cookies仍然可以跟踪的浏览行为。事实上,超过半数的流行站点使用Flash跟踪Cookies,这意味着即使你使用浏览器的隐私模式,依然不能阻止他们跟踪你的行为。
事实:尝试只禁用第三方Cookies
如果你仍然担心Cookies会导致隐私问题,那么你可以将你的浏览器设置为只接受第一方Cookies,这样你仍 然可以顺利登陆你所访问的网站。对于第三方览器来说,只需要进入选项窗口,点击“隐私”标签,取消“接受第三方Cookies”的勾选即可。如果导致了任 何问题,你可以保持这个选项被勾选,但是更改设置为退出浏览器时自动删除Cookies。其他浏览器的设置方式类似,只需要进入选项页面中找到它们即可。 据安全隐患,建立数据防泄漏体系才是保护数据最彻底、最有效的方式。许多企业已经认识到数据加密的重要性。但是由于数据加密软件技术水平良莠不齐,企业自 身预算紧张等原因,许多企业对于数据防泄漏体系是一拖再拖。直到数据真的丢失,才万分后悔。[2]