【2007】知识是需要沉淀的; 思想是在不断学习,磨练中成熟的; 技术是在创新中开拓的…………… 【2007】不经历风雨,怎能见彩虹,没有人能随随便便成功。加油!

关于 Session 和 Cookie 的区别

上一篇 / 下一篇  2007-01-01 22:59:48 / 个人分类:知识积累

5q C B)U;i)Z.Z0先说 Session51Testing软件测试网W4y:`j,cf J

JA V@L&Ki0SESSION 是可以存储针对与某一个用户的 IE 以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边先研究 SESSION 是如何启动的,当打开 IE 以后浏览网站后会发出一个指令请求 SESSIONID 以及对各个类型数据的下载许可,如图片,声音以及FLASH。数据实际传输内容:IE到服务器
,z9?`$o7D Wv0GET / HTTP/1.151Testing软件测试网.Y%fr(z(_'zE
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*51Testing软件测试网5jD u+B5R.TUB
Accept-Language0: zh-cn51Testing软件测试网M7|7Bc7@
Accept-Encoding: gzip, deflate51Testing软件测试网0dc][.]-sB
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
[FU5|5M NX*h0Host:www.jh521.com
.I3q.I2sMf0Connection: Keep-Alive

{2Pe5O`~%R051Testing软件测试网5o/? C }7b#o

服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储并同时返回相关页面的下载数据,如下:服务器到IE
!VK CO,L:d"u0HTTP/1.1 200 OK
]Q8c_7rA)P.Q*ac0Server: Microsoft-IIS/5.0
l#Z}7n:J0Date: Sun, 30 Nov 2003 16:41:51 GMT
f:M$mEQ$l Y;n0Content-Length: 21174..Content-Type: text/html
K&cDG!l'y9h0Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/51Testing软件测试网 ?:b WE6wQi N
Cache-control: private51Testing软件测试网;Jn}a#x.Fj:U

51Testing软件测试网R.D?:xQ(e

然后就是页面 HTML 代码,此时这个 IE 程序(不是客户机)的 SESSIONID 就为IBOMFONAOJFEEBHBPIENJFFC,而当IE在访问任何这个站点的 ASP 程序的时候,就会把 IBOMFONAOJFEEBHBPIENJFFC 发送给服务器,服务器就会知道 IBOMFONAOJFEEBHBPIENJFFC 是表示你。而在服务器上设置 SESSION("name")="name" 完全可以看成是 SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name" 或者 SESSION(SESSIONID)("name")="name" 这样,SESSION 就区分开用户了。51Testing软件测试网6Li i.zL2e%|~&B

51Testing软件测试网[?0h#c7X]9G*X

而当服务器反馈这个 ID 的时候会看这个 ID 有没有被使用。如果有在换一个反正不会让你重复,如果想模拟某人的 SESSION 的 ID 来进行欺骗是可以的。不过要获取到对方 IE 传输信号,并且在保证当时这个 SESSIONID 没有被取消的情况下才可能实施。51Testing软件测试网a5dz(t0\)V$p

k(j$s a7?0关于 COOKIE

%_$S/@&s w$M Ir0

6w HDy]g0{0那么就在看看 COOKIE,有人说 SESSIONID 就是 COOKIE,按照技术上来讲他们不属于同类,但是属于一种工作模式,用户和服务器传输私有数据。当我设置 COOKIE 的时候,服务器会反馈给 IE 一个指令。IE 通过这个网络指令生成 COOKIE 并存放,在特定的时候会取得这个这个信息如在访问这个站点并且 COOKID 有效的时候。51Testing软件测试网%Ce#VK&tm\Z~z

(@2z2Y7e$WXr0那么为什么要用 COOKIE 而不用 SESSION 呢?51Testing软件测试网H&y}|5U)L7]l
看下区别

T/tadvGl0EvR8R(O051Testing软件测试网,N ]}j%}*i_

          有效时间以及存储方式         传输内容51Testing软件测试网6N*H&T3Aa j?
--------------------------------------------------
.TM J"d'[-fPc/a0COOKIE    可设置并在本地保留           明码信息51Testing软件测试网/g I.Ki:f;F'A

51Testing软件测试网2f3_jo6K?-l4fgHq

SESSION   在IE不关闭并服务器不超时     只有SESSIONID

.|$C5`R+lM0

T%Kf,ui/~ NQ051Testing软件测试网.?GLJh"Y v
当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用 COOKIE,因为他可以保留相当长的时间(在 COOKIE 记录被删除或者失效日期之前),而 SESSION 就不可以,他不会保留太长时间,而且 IE 在关闭后就自动清除了 SESSIONID 记录,在下次登入的时候会请求51Testing软件测试网e,mE.I9C5? Z
新的 SESSIONID,而服务器想通过用户个人变量校验用户的状态的时候,就不能用 COOKIE,如果用设置用户权限是 USER。而 IE 访问的时候就把 USER 的明码传输到服务器。那么如果我通过一定手段,比如直接修改 COOKIE 记录,把 USER 修改成 ADMIN 呢~~就麻烦了。

(CCd8Z~,n&kI051Testing软件测试网R6a&Sd `WkR2G

但存储用户名和密码或者网站的配色方案这样的信息,用 COOKIE 是最好的。51Testing软件测试网"zc%~2@;X0? d'gR

;q`.d6`;iG6t_h0在说说这个东西 Request.ServerVariables("HTTP_REFERER")  我想有一些人通过这个 Request.ServerVariables("HTTP_REFERER") 来进行一些关键性限制,特别是对付远程提交以及非法侵入。那么我就要提醒下服务器取得的 HTTP_REFERER 信息完全是 IE 传输给服务器的,可以模拟,而且难度不大。
Q;Gv8Y8jX;F0补充:
'ph;j!O7j`B{ a0COOKIE 是本地文件,是 40 大盗在阿里巴巴家做的记号,或者是送牛奶的人在你家门口钉的箱子。SESSION 是服务器端内存。51Testing软件测试网+o%z!og7h_)|

51Testing软件测试网 e h.dw9] hN$s

另:

-q s0hd~\0

.@4b(? hDc01、cookie数据存放在客户的浏览器上;session数据放在服务器上;51Testing软件测试网.O`jW _ a"UV
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗;考虑到安全应当使用session;
XS(I8cI03、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能;考虑到减轻服务器性能方面,应当使用COOKIE;
Pe;zRT04、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K;51Testing软件测试网 x|`(mz0NZ
5、建议将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。
i R:E`C9R"f2?0

$c-]^3Psp_8ko4x oj0t0

TAG: Session Cookie 知识积累

zhaodanping的个人空间 引用 删除 zhaodanping   /   2014-11-06 14:46:31
3
hundu的个人空间 引用 删除 hundu   /   2013-09-06 11:19:44
总结的好
测试路上小蜗牛 引用 删除 felix09049   /   2010-04-12 13:53:04
session:
1.保持会话 2.区别用户3.保存在服务器端4.生命周期存在于IE没关闭,服务器未超时期间
嗯,记住了。
 

评分:0

我来说两句

Open Toolbar