Session机制(精选4篇)
Session机制 篇1
1 引言
一般情况下,登录一个网站时,通常被要求输入用户名和密码,之后再进入相关网页就可以畅通无阻,这是什么原因呢,很多用户并不太清楚。
这是因为用户的信息被存储了,那用户信息被谁存储,又被存储在哪里了呢?它可能被Session存储,也可能是被Cookie存储的。
2 Session与Cookie
2.1 什么是Session
Session用中文来解释就是会话期。一个会话期开始于用户输入一个站点的网址时,结束于离开这个站点时。
Session在Web技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过Session记录用户的有关信息,以供用户再次以此身份对Web服务器提供要求时作确认。例如,在某些网站中常常要求用户登录,但怎么知道用户已经登录了呢,如果没有Session的话,登录信息是无法保留的,那岂不要让用户在每一页网页中都要提供用户名和密码?
2.2 Cookie
Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
Cookie是与Web站点而不是与具体页面关联的,所以无论用户请求浏览站点中的哪个页面,浏览器和服务器都将交换网站的Cookie信息。用户访问其他站点时,每个站点都可能会向用户浏览器发送一个Cookie,而浏览器会将这些Cookie分别保存。
以上就是Cookie的基本工作原理。
3 机制差别
具体来说Cookie机制采用的是在客户端保持状态的方案。它是在用户端的会话状态的存储机制,他需要用户打开客户端的Cookie支持。Cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力。
而Session机制采用的是一种在客户端与服务器之间保持状态的解决方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的。而Session提供了方便管理全局变量的方式。
Session是针对每一个用户的,变量的值保存在服务器上,用一个Session ID来区分是哪个用户Session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用Cookie时,这个值也可能设置为由get来返回给服务器。
就安全性来说:当访问一个使用Session的站点,同时在自己机子上建立一个Cookie,建议在服务器端的Session机制更安全些,因为它不会任意读取客户存储的信息。
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism是通用Cookie规范。网络服务器用HTTP头向客户端发送Cookies,在客户终端,浏览器解析这些Cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些Cookies。
由于HTTP协议是无状态的,而出于种种考虑也不希望使之成为有状态的,因此,后面两种方案就成为现实的选择。具体来说Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的。
4 Cookie机制
正统的Cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的Cookie。然而纯粹的客户端脚本如Java Script也可以生成Cookie。而Cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的Cookie,如果某个Cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该Cookie附在请求资源的HTTP请求头上发送给服务器。
Cookie的内容主要包括:名字、值、过期时间、路径和域。如果不设置过期时间,则表示这个Cookie的生命期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。这种生命期为浏览器会话期的Cookie被称为会话Cookie。会话Cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。如果设置了过期时间,浏览器就会把Cookie保存到硬盘上,关闭后再次打开浏览器,这些Cookie仍然有效直到超过设定的过期时间。
存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的Cookie,不同的浏览器有不同的处理方式。对于IE,在一个打开的窗口上按Ctrl-N(或者从文件菜单)打开的窗口可以与原窗口共享,而使用其他方式新开的IE进程则不能共享已经打开的窗口的内存Cookie。
5 Session机制
Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。
当程序需要为某个客户端的请求创建一个Session的时候,服务器首先检查这个客户端的请求里是否已包含了一个Session标识-称为Session id,如果已包含一个Session id则说明以前已经为此客户端创建过Session,服务器就按照Session id把这个Session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含Session id,则为此客户端创建一个Session并且生成一个与此Session相关联的Session id,Session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个Session id将被在本次响应中返回给客户端保存。
保存这个Session id的方式可以采用Cookie,这样在交互过程中浏览器可以自动地按照规则把这个标识发给服务器。一般这个Cookie的名字都是类似于Session ID。比如Web logic对于Web应用程序生成的Cookie,JSESSIONID=By OK3vj FD75a Pnr F7C2Hmdn V6QZc Ebz Wo Wi BYEn Lerj Q99z W-p Bng!-145788764,它的名字就是JSESSIONID。
由于Cookie可以被人为地禁止,必须有其他机制以便在Cookie被禁止时仍然能够把Session ID传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://...../xxx;jsessionid=By OK3vj FD75a Pnr F7C2Hmdn V6QZc Ebz Wo Wi BYEn Lerj Q99z W-p Bng!-145788764;另一种是作为查询字符串附加在URL后面,表现形式为http://...../xxx?jsessionid=By OK3vj FD75a Pnr F7C2Hmdn V6QZc Ebz Wo Wi BYEn Lerj Q99z Wp Bng!-145788764这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把Session ID的信息和正常程序参数区分开来。为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个Session ID。
在谈论Session机制的时候,常常听到这样的说法“只要关闭浏览器,Session就消失了”。对Session来说也是一样的,除非程序通知服务器删除一个Session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除Session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分Session机制都使用会话Cookie来保存Session ID,而关闭浏览器后这个Session ID就消失了,再次连接服务器时也就无法找到原来的Session。如果服务器设置的Cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的Session ID发送给服务器,则再次打开浏览器仍然能够找到原来的Session。
恰恰是由于关闭浏览器不会导致Session被删除,迫使服务器为Seesion设置了一个失效时间,当距离客户端上一次使用Session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把Session删除以节省存储空间。
6 结语
Session机制与Cookie机制能提高网页的浏览速度,便于查找浏览过的网页信息,提高工作效率。它们本身并不复杂,但在实现和配置上的灵活性却使得具体情况复杂多变。这也要求我们不能把仅仅某一次的经验或者某一个浏览器、服务器的经验当作普遍适用的经验,而需要具体情况具体分析。
摘要:Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持状态的方案。本文介绍了这两种机制的含义和一些实例,以方便大家区别Session和Cookie机制。
关键词:Cookie机制,Session机制,服务器,浏览器
参考文献
[1]刘素英.电脑知识与技术.北京:电信科学出版社,2006:9~9.
[2]王雪松,李志蜀,童铭,熊科,林梅琴,袁晓玲.计算机应用研究,2006:9~24.
Session机制 篇2
1 客户端对服务器端的欺骗攻击
1.1 攻击原理
在用户访问并登录了某个网站后, 该网站的服务器就会给该用户机子上分配一个SessionID, 此信息是通过客户机的cookies存放在某一文件夹里面的。Session本身并不是长期有效, 每一个Session在客户端关闭浏览器后SessionID都会自动撤销, 但服务端默认保存20分钟。正是有这20分钟的时间, 给欺骗带来了可能。
服务器端对不同用户的识别, 只能通过SessionID进行, 也就是说网站服务器端是“只认ID不认人”, 只要ID符合, 就认为是合法用户, 所以攻击者只要得到了被攻击对象的SessionID就可以以被攻击对象的身份合法登录, 而20分钟的默认保留值, 也使得攻击者即使在被攻击对象关闭浏览器后依然有一定的时间成功登录。
1.2 攻击常用手法
当前利用此原理进行攻击的常用手法是利用网站本身的xss漏洞或者是诱骗被攻击者点击相应链接, 以使其隐蔽访问攻击者事先假设好的网站并执行恶意代码, 获取被攻击者的cookies信息从而得到SessionID。最后用可以修改SessionID的浏览器或其它可以提交数据的工具伪装成被攻击者的ID合法登录。
1.3 此类攻击的防范
此类攻击过程较为隐蔽, 但也有其局限性。因为Session本身有时间限制, 特别是用户在关闭浏览器后, 留给攻击者的时间也只有20分钟。另外, 在触发机制上, 盗窃cookies代码的执行必须是用户自己触发, 也就是说, 用户什么时候触发代码, 攻击者是不知道的, 从用户触发恶意代码到Session失效, 攻击者只有很短的时间进行非法活动。
所以, 要对此类攻击进行防范, 客户端本身应对陌生人给出的超级链接保持警惕, 特别是对比较长的超链接更要小心。每次登录网站后应该及时利用网站的退出功能退出和清除本机的cookies。另外登录密码的设置不要过于简单, 尽量使用字母与数字组合, 密码长度应该在8位以上。网站管理员在开发网站时要注意检查网站的xss漏洞, 要注意Session有效期的设置, 一般不要把有效期设置太长, 这样即使真的被攻击也能让其非法活动时间大大缩短。
2 直接对服务器端的欺骗攻击
2.1 攻击原理
与客户端欺骗不同, 此类攻击是对服务器端的直接欺骗。网站开发者在管理员管理页面通常都会有Session验证, 目的是为了验证当前登录者是否为合法用户。以ASP为例, 通常使用代码为:
此段代码验证了session ("admin") 是否为空, 是则给出提示并返回初始登录状态。我们可以想到如果之前有管理员以自己的合法账号登录过, 则session ("admin") 必定有相应的赋值而不会遭到拦截。所以在这里, 此段代码确实可以有效的阻止不经过验证而直接登录管理页面的非法登录者。
但如果攻击者能够在登录管理页面前, 使用某种手段使得session ("admin") 被赋值 (不一定是网站开发者所赋予的值) 则此段验证代码则无法拦截此类非法登录。从而达到了直接欺骗服务器而以管理员身份直接登录的目的。那么, session ("admin") 是否可以在外部被赋值呢?对此本文做了两个实验:
实验1用IIS建立两个不同站点X, Y
分别访问站点X和Y中的A.ASP页面后再访问站点X中的B.ASP页面, 页面输出显示为"更改不成功"。证明Y站点A.ASP中的语句并没有对X站点的session ("admin") 的值产生影响。
实验2用IIS建立站点X, 并在X站点下建立Y目录
分别访问站点X和目录Y中的A.ASP页面后再访问站点X中的B.ASP页面, 页面输出显示为"更改成功"。证明Y目录下的A.ASP中的语句对X站点的session ("admin") 的值产生了影响。
由此两个实验可知, session ("admin") 并不能在不同站点间互相赋值, 只有在同一站点下才有能在外部赋值的可能。所以此类对服务器端的直接欺骗攻击并不是在任何条件下都可进行, 还需要一些特定的条件。
2.2 攻击常用手法
当前利用此原理进行攻击的常用手法是都是在取得了某网站域名下的某个webshell进行的。如许多免费空间网站都会在主域名下允许用户有自己的二级域名, 而此域名的目录又和网站主目录在同一站点下, 这样就为欺骗攻击提供了条件。而其它一些网站由于自身的XSS等漏洞, 使得用户拿下某个webshell, 从而也使欺骗攻击成为了可能。在具备了欺骗必备条件后, 攻击者还必须知道session验证的源码, 从而才能编写恶意代码绕过系统原有的验证。当然, 如果验证源码是上文所列的情况, 则攻击者只需知道session所用变量即可, 因为其并没有给出具体的赋值, 只是简单的验证是否为空。攻击者只要赋任意值即可通过此验证。
2.3 此类攻击的防范
此类攻击手法也相当隐蔽, 危害极大。因为攻击一旦成功, 则攻击者即可以管理员身份非法登录。从此类欺骗攻击的原理我们知道, 此攻击要成功必须具备多个先决条件:获得该域名下的一个webshell或者攻击网站与被欺骗网站在同一主站的同一目录下;被攻击主站采取了session验证管理页面;获得被攻击站点的session验证源码;知道被攻击主站的管理页面地址。
所以我们要防范此类攻击, 就只能从几个限制条件考虑。网站开发者应该尽量避免各种漏洞, 站点在使用前应该经过周密而详尽的测试, 从而降低被发现漏洞的可能。对于网站源码不能轻易泄露, 特别是在公开场合。如果是使用公开源码假设的网站, 更要把源码关键部位更改。本攻击欺骗的关键源码部位即session验证源码, 上文所举例子如能改成如下代码则安全性大大提高:
一个是session变量, 另一个是限制条件, 都应该不用常规命名, 也不公开, 只有开发者自己知道。这样此类欺骗要攻击成功就基本不可能了
4 结论
Session欺骗攻击是目前比较流行而且隐蔽的手法, 其运用范围广, 危害大。但只要了解了其主要原理和限制条件, 并根据相关的防范方法, 从网站的开发阶段、测试阶段严格把关, 发现问题和漏洞后及时更新和维护, 就可以把受到此类攻击的概率大大降低。
参考文献
[1]刘杰.浅议跨站脚本攻击的检测与防护[J].电脑开发与应用, 2011 (10) .
Session机制 篇3
“Cookie”在英语中的意思是“小甜饼或小礼物”, 大家知道HTTP协议本身是一种无状态协议, 服务器单单从网络连接上是无法知道用户身份的。那么在访问网站时, 它是什么概念呢?它意味着服务器给浏览器的“小礼物”, 具体可以理解为一张“会员卡”, 当你第一次访问网站时, 在你自己的浏览器中存放了一张”会员卡”, 里面登记了一些信息。凭借此“会员卡”, 只要在有效期内使用该浏览器再次登录网站, 网站的各个页面都能识别该“会员卡”, 从而达到识别用户、跟踪用户、实现用户自定义功能。其中域和路径属性标识了这个“会员卡”是哪个网站发送给浏览器的, 同时创建时间和过期时间说明了“会员卡”的有效期, 有效期过后, “会员卡”就被自动删除。
如果不设置过期时间, 则表示这个“会员卡”的有效期就只到浏览器关闭的时候, 此时Cookie被浏览器保存在内存中。
如果设置了过期时间, Cookie则被浏览器保存在硬盘中, 有效期直到过期时间为止。存储在硬盘的Cookie可以在不同的浏览器进程中共享。
在PHP中对Cookie的操作有以下一些内容:
1) 设置Cookie
PHP中使用Set Cookie函数来设置Cookie, 发放“会员卡”, 使用全局数组$_COOKIE来保存需要的数据。
setcookie (“name”, “value”) ;
setcookie (“name”, “value”, time () +24*3600) ;
需要注意的是, 设置的“会员卡”并不是可以立即使用的, 而是需要等到下个页面才可以使用。
2) 接收和处理Cookie
echo$_COOKIE[“name”];
3) 删除Cookie
setcookie (“name”) ;
setcookie (“name”, “”) ;
setcookie (“name”, “value”, time () -100) ;
2 Session
“Cookie”如果理解为浏览器保存的一张网站“会员卡”, 要让网站识别的话, 只需要出示卡片, 那么Session就可以理解为浏览器上只保存的“会员卡”“卡号”, 要让网站识别的话, 只需要告诉网站“卡号”, 网站根据“卡号”查找“会员卡”, 从而实现识别用户的目的, 这个“卡号”就是我们所说的Session ID[1]。
这个Session“会员卡”在网站服务器上的保存时间一般是20 min, 过了期限, “会员卡”会被销毁。程序员也可以在其销毁之前另行存储。
那么浏览器端保存“卡号”会有哪些方式呢?
浏览器一般提供了两种保存方式:
1) 使用Cookie来保存, 这是最常见的方式。服务器通过设置Cookie将“卡号”保留到浏览器上, 下次访问相同的网站时, 可以用“卡号”去标识身份。但是有很多浏览器会禁用Cookie, 所以要保存“卡号”, 可以使用第二种方法。
2) 使用URL附加信息的方法, 比如访问某网站时会有xxx。php SESSIONID=xxx, 这个和第一种方式里面不设置Cookie的过期时间是一样的。
3) 还有一种就是通过在表单中增加隐藏域, 这个方式其实和第二种是一样的道理, 只不过URL是通过GET方式发送数据, 而这种是采用POST方式发送数据, 显然GET方式简单的多。
在PHP中对Session的操作有以下一些内容:
1) 设置Session
但凡需要使用Session, 都必须使用函数session_start () , 然后可以使用全局数组$_SESSION来保存需要的数据。
session_start () ;
$_SESSION[“name”]=“value”;
2) 接收和处理Session
session_start () ;
echo$_SESSION[“name”];
3) 删除Session
session_start () ;
session_unset () ;
session_destroy () ;
3 区别与联系
1) Cookie数据是保存在客户端“—”浏览器上的, Session数据是保存在服务器端。
2) Cookie通过把所有要保存的数据通过HTTP协议的头部从客户端传递到服务端, 又从服务端再传回到客户端, 所有的数据都存储在客户端的浏览器里, 所以这些Cookie数据可以被访问到。不仅可以查看Cookie, 甚至可以通过类似于Firecookie这样的插件添加、修改Cookie, 所以Cookie的安全性受到了很大的挑战, 只要别人盗走你的”会员卡”, 那么你会承受很大损失[2]。
3) Session由于在客户端保存的是”卡号”, 如果采用Cookie方式保存, 而Cookie又容易受到攻击, 所以一旦客户端禁用了Cookie, 那么Session就会没用。所以我们常用的是URL的方式来传递”卡号”, 因此不是完全依赖Cookie。
4) 每个Cookie保存的数据大小不能超过4 K, 大部分浏览器都限制一个站点保存的cookie数最多20个。
5) Session由于保存在服务器上, 会比较占用服务器的性能, 如果考虑到减轻服务器负担的话, 可以使用Cookie。
6) 一般在使用时, 建议将登录等重要信息存放在Session中, 其他信息放在Cookie中。
7) 防止header () 引发的Cookie与Session错误。
参考文献
[1]柳丽娜.浅淡Session机制与Cookie机制[J].电脑编程技巧与维护, 2008 (16) :28-29.
Session机制 篇4
本文结合实例,介绍利用Session对象在网站开发中保存、传递登录用户信息以及利用Session数组同时保存、传递多个信息的方法。
一、Session对象
1. Session对象的作用
Session对象是ASP的内置对象之一,负责记载单个用户的信息。不同用户的信息用不同的Session对象记载。Session对象最大的特点是,Session-旦被创建,网站中各页都可以读取它。Session对象又称为会话级对象,当一个用户访问网站时,即启动了一个Session对象,即使该用户在网站的各页间跳转时,该Session信息一直存在,网站的任何一个页面都可以读取它,直至该用户离开网站。
Session对象有有效期,一般为20分钟。当用户离开网站或在Session有效期内不再点击网站的任何内容时,该Session对象会自动被删除。
2. Session对象的创建与读取
可以把登录用户的用户名、密码等信息存储在Session中。创建Session的语句为:Session("Session名字")=变量或字符串信息。读取Sessi on信息的语句为:变量名=Session("Session名字")。
Session数组的创建和读取与简单变量基本上是一样的,不同的是一般的Session变量只能存储一个数据,而Session数组能够存储多个数据。Session数组当成一个整体看待,只能把一个数组整体存入或取出。
二、Session对象应用实例
1. 利用Session对象防止非法用户访问并在网站内各页间传递、保持用户信息
在互联网的搜索引擎中,输入查询关键词,便会找到包含该关键词的若干网页,点击即可进入,这对网站的安全构成了威胁。网站可以利用Session对象,控制用户必须先登录,登录成功后才能访问其他网页。控制的方法是在其他网页的开头加上一段程序:
<%
If Session ("User_Name")=""then'若Session("User_Name")为空,则表示用户没有登录过
Response.Redirect"Login.asp"'直接转入登录页(Login.asp)
End%>
如果用户在登录页登录了,则用<%Session ("User_Name")="用户名"%>语句创建名为"User_Name"的Session,将用户名存入。登录页Login,asp主要代码如下:
,用户要填写的登录表单,略<%
If Request.Form("User Name")>""Then'若用户填写了用户名,则
Session ("User Name")=Request.Form ("User_Name")'将用户名存入名为User_Name的Session变量中
End If%>
存储用户名的Session建立后,用户再访问其他页时,其他页都可以通过读取Session ("User_Name")的值获得该用户信息。
2. 利用Session数组在页间传递、保持用户购物信息
可以利用Session对象具有的“一旦创建,各页共享”的特点,以及Session数组可以一次传递多个变量的特点,为网站制作一个简易购物车。将用户在浏览商品页选择的商品名称及数量,传递到“查看购物篮”页。以下给出制作简易购物车实例。
(1)供用户浏览、选择商品的页面程序SelectProduct1.asp部分代码如下:
<%
dim ar1(2)'声明一个数组ar1
dim ar2(2)……
....
If Request("b1").Count>0 Then'若表单项b1不空,则用户选择了该产品
ar1(0)=Request("b1")'将获取的商品名称存入ar1数组的第一个元素中
ar1(1)=Request("n1")'将获取的商品数量存入ar1数组的第二个元素中
Session ("array_s1")=ar1'将数组ar1存入名为array_s1的Session数组中
Session("bz1")=1'将1存入名为bz1的Session中,做标记用,表示数组不空
End If
……'其他商品依次类推
%>
请选择商品,每件100元:
本页中,若用户选择了一个商品,则通过Request对象分别获取商品名称和购买数量,存入数组,再将该数组整体存入Session中,以便在“查看购物车“页中将所选商品名称和购买数量读出来。
(2)其它商品页程序同SelectProduct1.asp。
(3)“查看购物车”页程序Display.asp如下:
<%
If Session ("bz1")=1 Then
ar1=Session("array_s1")'将Session数组array_s1整体取出,写入名为ar1的数组变量中
Response.Write ar1 (0)+" "+ar1 (1)+"
"'将数组中各元素输出,即显示商品名称和购买数量
End If
……'其他商品依次类推
%>
三、Session对象与隐藏域的综合应用
隐藏域是表单中类型为Hidden的文本框,该文本框在页面上不可见。表单提交时,隐藏域的值一并被提交。利用的这个特点,可以将登录者的用户名,即Session("User_Name")的值,作为隐藏域的值,在用户提交购物表单时一并提交。隐藏域定义与赋值关键代码如下:
"
四、使用Session对象时应注意的问题
Session对象虽然功能非常强大,但也有一定的局限性,使用时应充分注意。
Session的使用要借助于客户端。若某客户端机器出现问题,则网站对该用户的记载中断。同时,服务器与客户端的每次连接时要占用网络资源,传递的数据量较多时将影响网速。
五、总结
Session对象在网站开发中起着非常重要的作用。利用Session对象和Session数组,在网站各页间可以一次传递单个或多个数据。Session对象占用大量的网站资源,应注意使用后尽快删除。合理地使用Session,将有助于提高网站开发的效率。
摘要:阐述了Session对象的作用及应用方法,指出了Session对象的特点,并在此基础上给出了Session对象的几个应用实例。最后对Session对象的局限性作出了分析。
关键词:ASP对象,ASP程序设计,Session对象
参考文献
[1]菜翠平尚俊杰:网络程序设计ASP(第2版)[M].北京:清华大学出版社,北方交通大学出版社,2004年2月P73
[2]石志国王志良薛为民:ASP精解案例教程[M].北京:清华大学出版社,北方交通大学出版社,2004年1月P118
【Session机制】推荐阅读:
session全教程09-27
论国有林区经济发展的微观机制-市场机制08-18
留人机制07-03
制定机制07-15
传播机制07-17
规避机制07-17
均衡机制07-21
互评机制07-21
筹措机制10-13
计量机制10-14