注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

session和cookie的最深刻理解  

2009-08-10 16:43:00|  分类: ASP开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

去先说session 

对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。 

但还是讲讲,别嫌老~ 

有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法 

如果有错误请不要朝丢东西,金条和硬币除外。 

有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而 

从一些比较实际的角度看SESSION。 

首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当 

前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边 

先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以 

及对各个类型数据的下载许可,如图片,声音以及FLASH。 

数据实际传输内容:IE到服务器 

GET / HTTP/1.1 

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */* 

Accept-Language0: zh-cn 

Accept-Encoding: gzip, deflate 

User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 

Host: www.jh521.com 

Connection: Keep-Alive 

服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储 

并同时返回相关页面的下载数据,如下:服务器到IE 

HTTP/1.1 200 OK 

Server: Microsoft-IIS/5.0 

Date: Sun, 30 Nov 2003 16:41:51 GMT 

Content-Length: 21174..Content-Type: text/html 

Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/ 

Cache-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没有被取消的情况下才可能实施。 

不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲 

想必一些人明白了了SESSIONID到底是如何工作的 

那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类 

但是属于一种工作模式,用户和服务器传输私有数据 

当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并 

存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。 

那么为什么要用COOKIE而不用SESSION呢 

看下区别 

有效时间以及存储方式 传输内容 

COOKIE 可设置并在本地保留 明码信息 

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

当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE, 

因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前) 

而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录 

在下次登入的时候会请求新的SESSIONID 

而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE 

如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。 

那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~ 

就麻烦了。 

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

好,有点累了,在说说这个东西 

Request.ServerVariables("HTTP_REFERER") 

我想有一些人通过这个Request.ServerVariables("HTTP_REFERER") 

来进行一些关键性限制,特别是对付远程提交以及非法侵入。 

那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟 

而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。 

(可惜我原先拿它没干正经事情,做WEB游戏挂机程序来的)

  评论这张
 
阅读(460)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017