分享
 
 
 

在ASP应用中验证用户身份

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题。注册与密码是保护敏感信息最为常用的手段。由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息。

一、示例站点概貌

本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程。我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为

ASPSecurity。唯一的数据库表拥有以下字段:Signon(文本,注册的用户名),Password(文本,密码),LastOn(文本,用户最后一次访问时间),TimedOut

(是/否,是否由于超时而被系统终止会话)。

系统主要包括以下几个页面:

default.htm —— 重定向浏览器到signon.asp页面。

signon.asp —— 提供登录系统界面。

signedOn.asp —— 成功登录系统之后显示的页面。

register.asp —— 新用户注册页面。

缺省页面default.htm只用于将浏览器重定向到signon.asp登录页面,这由下面这个META标记实现:

< META HTTP-EQUIV="REFRESH" CONTENT="1; URL=signon.asp">

signedOn页面是整个站点唯一受保护的页面,必须经过身份验证才能访问。

在ASP应用中验证用户身份(2)

录入人员:asp发布时间:2005-7-30 19:57:17 (浏览37次)

二、初始化以及用户输入合法性检查

当一个ASP应用启动的时候,IIS就会寻找一个global.asa文件。如果该文件存在,就开始执行Application_onStart。在这里可以初始化应用级的变量和常量。下面的代码在Application_OnStart中初始化一个数组来跟踪任意时刻登录系统的所有用户:

Sub Application_OnStart

Application("Users") = Array()

End Sub

在执行Application_OnStart之后,ASP引擎创建一个Session对象并初始化

SessionID,然后触发Session_OnStart事件。在这里可以初始化会话级(和特定用户相关的)变量和常量:

sub Session_OnStart

Session.Timeout=1

' 数据库DSN

Session("ConnectionString") = "ASPSecurity"

Session("ConnectionTimeout") = 15

' 读/写方式

Session("Mode") = 3

end sub

考虑到用户的浏览器可能不支持Cookies或关闭了Cookies功能,因此必须在第一个ASP页面中检查Cookies的支持情况并把结果保存在一个Session变量中。此外,当用户在登录页面中单击“登录”按钮,还应该检查用户输入的合法性,如下面的代码所示,其中ASPSecurity.inc提供一些公用函数(如signUserOn用于验证用户身份):

< %@ Language=VBScript %>

< % option explicit %>

< % Response.buffer = true %>

< !-- #INCLUDE FILE="ASPSecurity.inc" -->

< %

dim aSignon

dim aPassword

dim dataValidated

dataValidated = false

' 检查浏览器是否支持Cookies

Session("SupportsCookies") = (instr(1, Request.ServerVariables

("HTTP_COOKIE"), "ASPSESSIONID", vbTextCompare) > 0)

if Request("Action") = "登录" then

aSignon = lcase(trim(Request.Form("Signon")))

aPassword = lcase(trim(Request.Form("Password")))

if len(aSignon) = 0 then

Session("msg") = "请输入用户名字."

end if

if len(aPassword) = 0 then

Session("msg") = "请输入密码."

else

dataValidated=true

end if

if dataValidated then

if signUserOn(aSignon, aPassword) then

' 用户身份被证实,允许进入受保护页面

Response.Redirect "signedOn.asp?ID=" & Session("ID")

end if

end if

elseif Request("Action") = "注册" then

Response.Redirect "register.asp"

end if

%>

对于注册页面,除了要检查用户是否完整地输入所有内容之外,还应该检查两次输入密码是否相同、用户名字是否与数据库中已有记录冲突等。实现代码请参见本文所附的ZIP文件。

由于用户每次启动浏览器连接到服务器时SessionID都是不同的,所以不能直接用它来关联用户与存储在数据库中的相关信息,但SessionID可以用来临时地标识从数据库或文件提取的用户信息。对于那些不支持Cookies的浏览器,可以用另外的方法来创建唯一ID,如下面的getID使用的是随机函数:

function getID() dim numbers

dim letters

dim I

dim ID

Randomize

numbers="0123456789"

letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

for I = 1 to 10

if I mod 2 <> 0 then

ID = ID & mid(letters, Int((26 * Rnd) + 1),1)

else

ID = ID & mid(numbers, Int((10 * Rnd) + 1),1)

end if

next

getID = ID

end function

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有