开发者社区> 长征2号> 正文

Cookie小记

简介:
+关注继续查看

最近在工作上经常看一些安全相关的东西,Cookie以前看过,但了解不深,现在重看,先记录一下。

  以下有一些资料是转至百度百科(发现百度百科做的越来越好了,赞一个),有一些是自己的总结:

1.Cookie是什么?

  可以先这么理解,它是在你计算机里的一个文件 (看得见实物总比抽象的概念来得容易理解),IE存放Cookie文件的地方是:“C:\Documents and Settings\用户名\Cookies”, 比如:Cookie:yournames@alimama[1].txt这就是其中一个Cookie文件;如果你用的是NetsCape,Cookie则存放在:“C:\PROGRAMFILES\NETSCAPE\USERS\”,并且和IE不同,它只是用一个Cookie文件记录所有的Cookies记录。

2.Cookie是里面记录了些什么,什么时候生成的?

  Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。

  Cookie中的内容大多数经过了加密处理,因此在我们看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。通过一些软件可以更方便去查看,比如Cookie Pal,它是一个查看Cookie的工具,我试用了一下,他只不过是把Cookie信息都列了出来,跟你自己去目录自己找看到的东西是一样的,就是方便一点,数据加密了还是加密了,想要明白这些数据的含义估计得问写这些网站的人了X|(当然部分还是可以大概猜得到的)。

3.为什么需要Cookie这种机制?

  这得从HTTP协议说起,HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都是独立的。

  但随着WEB的发展,WEB需要用动态信息状态)去丰富WEB的功能,其中Cookie就是作用解决HTTP协议无状态的缺陷提出的一种方案。值得注意的是对比Session这个概念,Cookie机制是保存客户端状态的方案,而Session是保存服务端态的方案。

4.理解Cookie机制:

  正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。

  而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。意思是麦当劳的会员卡只能在麦当劳的店里出示,如果某家分店还发行了自己的会员卡,那么进这家店的时候除了要出示麦当劳的会员卡,还要出示这家店的会员卡。

  cookie的内容主要包括:名字,值,过期时间,路径和域。 

  其中域可以指定某一个域比如.google.com,相当于总店招牌,比如宝洁公司,也可以指定一个域下的具体某台机器比如www.google.com或者froogle.google.com,可以用飘柔来做比。路径就是跟在域名后面的URL路径,比如/或者/foo等等,可以用某飘柔专柜做比。路径与域合在一起就构成了cookie的作用范围。 可以看一下CookiePal的Cookie列表的截图:

o_CookieLook.bmp

  如果不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览器会话期的 cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。

  存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。对于 IE,在一个打开的窗口上按Ctrl-N(或者从文件菜单)打开的窗口可以与原窗口共享,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存 cookie;对于Mozilla Firefox0.8,所有的进程和标签页都可以共享同样的cookie。一般来说是用javascript的window.open打开的窗口会与原窗口共享内存cookie。浏览器对于会话cookie的这种只认cookie不认人的处理方式经常给采用session机制的web应用程序开发者造成很 大的困扰。

5.如何增加Cookie记录:

  增加Cookie的方法很多,下面是两种增加Cookie的方法:

Response.Cookies("userName").Value = "mike"
Response.Cookies(
"userName").Expires = DateTime.Now.AddDays(1

Dim aCookie As New HttpCookie("lastVisit")
aCookie.Value 
= DateTime.Now.ToString
aCookie.Expires 
= DateTime.Now.AddDays(1)
Response.Cookies.Add(aCookie) 

  大概先记录这么多了,有机会再补充!

 

参考资料:

1.http://zhidao.baidu.com/question/2601861.html

2.http://baike.baidu.com/view/835.htm



本文转自hyddd博客园博客,原文链接:http://www.cnblogs.com/hyddd/archive/2008/12/26/1363229.html,如需转载请自行联系原作者。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Cookie 剖析
Cookie 剖析
13 0
【C#】【Cookie】Cookie设置与读取
【C#】【Cookie】Cookie设置与读取
80 0
60、Cookie
Cookie 是服务器保存在浏览器的一小段文本信息,一般大小不能超过4KB。浏览器每次向服务器发出请求,就会自动附上这段信息。
104 0
Hostonly cookie是什么鬼?
知道cookie hostonly属性的请举手🧐
90 0
小cookie,大智慧
Cookie是什么?cookies是你访问网站时创建的数据片段文件,通过保存浏览信息,它们使你的在线体验更加轻松。 使用cookies,可以使你保持在线登录状态,记录你的站点偏好,并为你提供本地化支持。
91 0
cookie处理
爬虫系列文章
97 0
Cookie(1)
Cookie的作用 主要作用就是为了用户认证 保留用户的一些其他信息 注意: SESSIONID就可能是Cookie中的一个字段的值 Cookie的种类 会话Cookie: 只是临时的cookie, 当用户关闭了浏览器的时候该cookie就会从浏览器的内存中移除掉 持久Cookie: 存储在磁...
748 0
+关注
长征2号
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载