电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

session和cookie的最深刻理解


发布日期:2024/4/19
 
先说session

对SESSION的争论好象一直没有停止过不过幺麽能理解SESSION的人应该占以上但还是讲讲别嫌老~

有一些人赞成用SESSION有一些人不赞成但这个问题到底要怎么说不妨听听我的看法如果有错误请不要朝丢东西金条和硬币除外

有些人应该知道我是做江湖程序的而江湖程序做看中的就是效率但这里不谈设计而从一些比较实际的角度看SESSION

首先要先说SESSION是干什么的SESSION是可以存储针对与某一个用户的IE以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制为什么要这样说看下边

先研究SESSION是如何启动的当打开IE以后浏览网站后会发出一个指令请求SESSIONID以及对各个类型数据的下载许可如图片声音以及FLASH

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

GET / HTTP/

Accept: image/gif image/xxbitmap image/jpeg image/pjpeg application/xshockwaveflash */*

AcceptLanguage: zhcn

AcceptEncoding: gzip deflate

UserAgent: Mozilla/ (compatible; MSIE ; Windows NT )

Host:

Connection: KeepAlive

服务器会返回一个没有被使用的SESSIONID让IE使用当时IE就对返回SESSIONID做存储并同时返回相关页面的下载数据如下:服务器到IE

HTTP/ OK

Server: MicrosoftIIS/

Date: Sun Nov :: GMT

ContentLength: ContentType: text/html

SetCookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/

Cachecontrol: 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是最好的

有点累了在说说这个东西

RequestServerVariables(HTTP_REFERER)

我想有一些人通过这个RequestServerVariables(HTTP_REFERER)

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

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

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

上一篇:XSL的控制语句

下一篇:svn实现垃圾清理的方法及代码