Session 和 Cookie 的区别

上一篇 / 下一篇  2007-01-04 13:55:18 / 个人分类:知识

先说 Session

SESSION是可以存储针对与某一个用户的 IE 以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边先研究 SESSION 是如何启动的,当打开 IE 以后浏览网站后会发出一个指令请求 SESSIONID 以及对各个类型数据的下载许可,如图片,声音以及FLASH。数据实际传输内容:IE到服务器
eE0D"b)M!r57257GET / HTTP/1.1
ehU}8v/G57257Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
y%z5}-B%tG3i57257Accept-Language0: zh-cn
7EF)~4pn ]e57257Accept-Encoding: gzip, deflate
mS Wn4m'gtm1s57257User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
(S P4w;x!de6V,m57257Host:www.jh521.com51testing软件测试博客%Gg/\#^`3gR
Connection: Keep-Alive

服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储并同时返回相关页面的下载数据,如下:服务器到IE51testing软件测试博客7Y2hj%\q3A9`aE
HTTP/1.1 200 OK51testing软件测试博客7W`.M1S(eM
Server: Microsoft-IIS/5.0
M'NqzM2C57257Date: Sun, 30 Nov 2003 16:41:51 GMT51testing软件测试博客:P/S2Z U q t
Content-Length: 21174..Content-Type: text/html51testing软件测试博客0J\2z!e9E o"M.ftLK
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/
(g9fzwZ7T57257Cache-control: private

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

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

关于 COOKIE

那么就在看看 COOKIE,有人说 SESSIONID 就是 COOKIE,按照技术上来讲他们不属于同类,但是属于一种工作模式,用户和服务器传输私有数据。当我设置 COOKIE 的时候,服务器会反馈给 IE 一个指令。IE 通过这个网络指令生成 COOKIE 并存放,在特定的时候会取得这个这个信息如在访问这个站点并且 COOKID 有效的时候。

那么为什么要用 COOKIE 而不用 SESSION 呢?
2mDNd(}%@k57257看下区别

          有效时间以及存储方式         传输内容51testing软件测试博客)k"Isj1U2\'mk)le3Z
--------------------------------------------------
"ps+mOM,]#B+z wy57257COOKIE    可设置并在本地保留           明码信息

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

51testing软件测试博客.jJQ E M!m%h a%I
当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用 COOKIE,因为他可以保留相当长的时间(在 COOKIE 记录被删除或者失效日期之前),而 SESSION 就不可以,他不会保留太长时间,而且 IE 在关闭后就自动清除了 SESSIONID 记录,在下次登入的时候会请求
$z*O/I2g&jL4u,sG/`` q2?57257新的 SESSIONID,而服务器想通过用户个人变量校验用户的状态的时候,就不能用 COOKIE,如果用设置用户权限是 USER。而 IE 访问的时候就把 USER 的明码传输到服务器。那么如果我通过一定手段,比如直接修改 COOKIE 记录,把 USER 修改成 ADMIN 呢~~就麻烦了。

但存储用户名和密码或者网站的配色方案这样的信息,用 COOKIE 是最好的。

在说说这个东西 Request.ServerVariables("HTTP_REFERER")  我想有一些人通过这个 Request.ServerVariables("HTTP_REFERER") 来进行一些关键性限制,特别是对付远程提交以及非法侵入。那么我就要提醒下服务器取得的 HTTP_REFERER 信息完全是 IE 传输给服务器的,可以模拟,而且难度不大。
:G#ll4|?G8p57257补充:51testing软件测试博客+_%D^`7`4D4sZ
COOKIE 是本地文件,是 40 大盗在阿里巴巴家做的记号,或者是送牛奶的人在你家门口钉的箱子。SESSION 是服务器端内存。

另:

1、cookie数据存放在客户的浏览器上;session数据放在服务器上;51testing软件测试博客 YS)N&bXc K4} l
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗;考虑到安全应当使用session;51testing软件测试博客$B|+C;x1p0F(W yk
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能;考虑到减轻服务器性能方面,应当使用COOKIE;
IH.r'~f0_U5hmpf572574、单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K;51testing软件测试博客S EF d#A.N0WU
5、建议将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。


TAG: 知识

八爪鱼 引用 删除 annie0406   /   2007-01-16 13:24:46
Thanks !
 

评分:0

我来说两句

我的栏目

日历

« 2024-03-31  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 6395
  • 日志数: 9
  • 图片数: 2
  • 文件数: 1
  • 建立时间: 2006-12-17
  • 更新时间: 2007-11-15

RSS订阅

Open Toolbar