ASP中简易用户访问控制-1

访问|控制

  在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法。另外的两种流行方法是使用cookie,或者使用ASP Session变量。在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限。

使用cookie来跟踪访问者
跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上。做为基本应用,cookie被当作用户再次访问站点时验证和区分注册用户的手段,而不需要他们再次输入注册信息。同样,可以使用cookie保存用户上一次访问站点的一些设置。
在ASP中使用cookie非常简单,可以使用Request对象的Cookies集合取回所有保存在客户端的cookie数值,然后使用Response对象的Cookies集合创建或者修改cookie数值,并保存到客户端。
  象ASP中许多对象一样,一个cookie不仅可以是集合中的一员,还可以自成为集合。创建一个单一cookie非常简单,代码如下:
Response.Cookies ("item-name") = "item-value"
创建一个包含多个数值的cookie,代码是:
Response.Cookies ("item-name")("sub-item-name") = "sub-item-value"
设置cookie的域属性、路径属性以及使用到期时间,相关代码是:
Response.Cookies ("item-name").domain = "domain-url"
Response.Cookies ("item-name").path = "virtual-path"
Response.Cookies ("item-name").expires = #date#
下面的例子在浏览器端创建了cookie选择,注意:必须在浏览器输出任何信息前创建cookie,因为它们是HTTP headers的一部分:
〈 %
Response.Cookies("SimpleCookie") = "SimpleExample"
Response.Cookies("CompoundCookie")("Value1") = "Value1" Response.Cookies("CompoundCookie")("Value2") = "Value2"
Response.Cookies("TimedCookie") = "TimedExample"
Response.Cookies("TimedCookie").path = "/" apply to our entire site Response.Cookies("TimedCookie").expires = #10/10/2005#
% 〉
〈 HTML 〉
〈 BODY 〉
...
〈 /BODY 〉
〈 /HTML 〉
读取cookies
通过使用request对象并遍历cookie集合,就可以读取所有cookie的全部内容。如果有些cookie含有多个数值,就通过遍历那个cookie自身集合来输出。
〈 HTML 〉
〈 HEAD 〉〈 TITLE 〉Reading the Cookie Collection〈 /TITLE 〉〈 /HEAD 〉
〈 BODY 〉
〈 B 〉The contents of your Cookies are:〈 /B 〉〈 P 〉
〈 TABLE CELLPADDING=0 CELLSPACING=0 〉
〈 %
For Each Item in Request.Cookies
If Request.Cookies(Item).HasKeys Then
use another For...Each to iterate this collection
For Each ItemKey in Request.Cookies(Item)
Response.Write Item & "(" & ItemKey & ") = " _
& Request.Cookies(Item)(ItemKey) & "〈 BR 〉"
Next
Else
print the complete cookie string as normal
Response.Write Item & "=" & Request.Cookies(Item) & "〈 BR 〉"
End If
Next
% 〉〈 /TABLE 〉
〈 /BODY 〉
〈 /HTML 〉
下图显示了执行上面代码的结果。但是,当你现在关闭浏览器并重新打开时,再运行这些代码,除了TimeCookie以为的所有数值都消失了。这是因为只有TimeCookie设置了“使用到期时间”,其他的当浏览器关闭时就自动消失了。

这里要讨论使用cookie保存登录信息的问题,并且看看在ASP页面间如何利用cookie数值。但是请记住:cookie仅仅被送往前次访问时所在路径相同的站点,也就是说cookie在初始设置时的环境中才能生效。如果没有设置cookie的path属性,它的数值默认就是当初创建时所在的虚拟路径。
这里有个例子描述保存登录信息到cookie中。由于没有设置“使用到期时间”,所以当前用户会话结束后cookie也就不存在了。
...
Response.Cookies("User")("v1") = "〈 % = Request("v1") % 〉" username Response.Cookies("User")("v2") = "〈 % = Request("v2") % 〉" password Response.Cookies("User").path = "/adminstuff" apply to admin pages
...
现在就可以在用户请求的每一个页面中寻找这个cookie了,如果没有找到,就重定向用户到登录页面:
...
If (Request.Cookies("User")("v1") 〈 〉 "alexhomer") _
Or (Request.Cookies("User")("v2") 〈 〉 "secret") Then
Response.Redirect "default.asp?nogood=yes&v1=" & Request.Cookies("User")("v1")
End If
...
使用ASP Session变量跟踪访问者
除了使用cookie,我们还可以充分利用ASP中的Session变量。我们可以在用户Session变量中保存数值,只要session变量还是激活的,这些保存的数值就可以被利用。通常,这些session变量将在用户最后一次请求页面后保持20分钟的时间,除非我们使用Session.Abandon方法明确地释放这些session变量。同时,可以使用ASP脚本中的Session.Timeout属性来设置这个过期时间。
使用session变量跟踪访问者要比使用cookie更安全,因为用户的session变量的内容不会随着页面请求而在网络上传递。除了初始登录以外,用户名与口令(或者任何数值)一直保存在服务器上。我们可以区别和认证访问者,将他们的登录信息保存在他们自己的Session对象中。当需要对访问者进行验证时,就从他们自己的Session对象中取会这些信息。举个例子,在用户登录后提交的页面中,加入如下代码:
...
Session("UserName") = Request("v1") username from logon dialog form
Session("Password") = Request("v2") password from logon dialog form
...
然后,当需要认证访问者时,就找到这些cookie并从中取回用户名和口令:
...
If (Session("UserName") 〈 〉 "alexhomer") _
Or (Session("Password") 〈 〉 "secret") Then
Response.Redirect "default.asp?nogood=yes&v1=" & Session("UserName")
End If
...

时间: 2024-10-03 23:25:12

ASP中简易用户访问控制-1的相关文章

ASP中简易用户访问控制(1)

在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法.另外的两种流行方法是使用cookie,或者使用ASP Session变量.在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限. 使用cookie来跟踪访问者跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上.做为基本应用,cookie被当作用户再次访问站点时验证和区

ASP中简易用户访问控制(2)

    使用Session变量的问题         虽然Session变量是简单易用的,而且比其他方法要安全,但还是有一些问题.首先,只有访问者的浏览器支持cookie时,Session变量才能正常工作.尽管现在大多数浏览器都支持cookie,但是记住访问者可以拒绝使用它(这依赖于浏览器的安全设置).         其次,特别在IIS4中,当浏览器请求多个页面时,Session变量可能被半途丢失.通常,遵循下面三个简单原则可以将这个漏洞减少到最小:         ○ 只使用一个global

ASP中简易用户访问控制-2

访问|控制 使用Session变量的问题虽然Session变量是简单易用的,而且比其他方法要安全,但还是有一些问题.首先,只有访问者的浏览器支持cookie时,Session变量才能正常工作.尽管现在大多数浏览器都支持cookie,但是记住访问者可以拒绝使用它(这依赖于浏览器的安全设置).其次,特别在IIS4中,当浏览器请求多个页面时,Session变量可能被半途丢失.通常,遵循下面三个简单原则可以将这个漏洞减少到最小:○ 只使用一个global.asa文件,放置在站点的根目录下.附带多个glo

ASP中得到用户的真实IP地址

ip地址 这个是以前供职于一家电子商务网站时,由于网站的销售的都是虚拟的东西,比如说游戏充值卡 呀什么的,支持在线支付.久而久之,就免不了有很多人想要来打网站的主意,一些无聊者老是用代理上网来攻击网站,这样子就算是我们知道被人攻击了也拿对方没办法,后来发现ASP中的Request.ServerVariables("HTTP_X_FORWARDED_FOR")可以得到用户的代理IP.如果用户用了代理,那么这个值就不会为空.反之.呵呵 那么,我们就可以在网页加载时检测用户的代理IP是不是为

在ASP中过滤用户输入 提高安全性

安全|安全性|安全|安全性 安全对于所有应用程序来说都是十分重要的.一个简单应用程序里的某个失误都会造成对数据库或者其他企业资源未经授权的访问,因此安全尤其重要.一种常用的攻击方法是将命令嵌入到用户的回应里,而从用户输入里过滤掉这些非法的字符就能够防止这种攻击. 允许用户输入非法的字符会增加用户导致问题的机会.例如,很多应用程序都能够接受用户在SQL命令里增加的WHERE子句.恶意用户会通过向其输入的信息里增加额外命令的方法,来执行数据库服务器上的代码.例如,他们不是输入"Smith"

ASPX中的用户控件与ASP中的INCLUDE方法对比

include|控件     在ASP的年代里,为了避免经常性重复的劳动,对一些功能相似的区域或者代码,经常作成一个文件,然后通过连接(直接连接或者虚拟连接)的方法引入到ASP网页文件之中,对于一个很大的引用了很多ASP文件就相当于一个文件被分成了很多块,彼此文件之间的数据是可以自由共享的(除了函数之中的数据).    ASPX的用户控件就与INCLUDE有很大的不同了,它的最大特点就是在于他是以包装好的对象的形式呈现,通过我们的编程,可以将一个公用的事例抽象出来,将一些功能和方法总结出来,作成

在ASP应用中验证用户身份

    交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息.    一.示例站点概貌    本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为   ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本

ASP.NET中在线用户统计的简单实现及讨论

asp.net|统计|在线     统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也

关于ASP.NET2.0 中的用户控件编程使用

asp.net|编程|控件 今天用了一下2.0中的用户控件,发现使用编程方式使用用户控件,跟1.X 中截然不同. 1.首先,要在所要使用的Page 头部声明引用.如下: <%@ Reference Control="../Controls/AlbumEditor.ascx" %> 2.在后置代码里,从"ASP"空间中就可以找到此控件的类引用了,不过还需要事例一下.-_-! 不明白设计者为什么要这么做,还不如1.1 那样直观.如下:  ASP.Contro