以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [转帖]利用ASP给主页加密  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11140)


--  作者:愚者
--  发布时间:10/19/2004 7:51:00 PM

--  [转帖]利用ASP给主页加密
Active server pages (动态服务器主页,简称ASP),能够让我们产生动态的、互动性、高效能的WEB应用程序,使我们能用非常简单的方法通过网页查询和修改数据库,现在已被越来越多的WEB设计人员所接受。但是我们在开发中往往遇到这样一种情况,即希望让某些页面受到保护,只让经过受权的用户访问,对一般用户则拒绝访问。

  下面我就向大家介绍如何用ASP来创建一个简单的,但是却相当有效的登录方案,从而保证WEB应用程序的安全性。只要你按照以下的步骤做,你将会拥有一个安全的用户登录系统。

  步骤1:创建一个用户表

  首先我们要创建一个记录受权用户信息的表格。在这个例子中,我用ACCESS97创建了一个名叫userinfo.mdb的数据库,它包含了受权用户的信息,用户有两个字段——用户名和用户密码,其中用户名为主关键字。(之所以选用ACCESS,是因为它广为人所知,使用方便,并且适用于大多数的中小型方案。)

  步骤2:设置缺省的验证状态

  我们要在global.asa文件中完成这些设置,为缺省的“not authenticated”状态设置一个对话变量。这样做后,当用户想访问那些受到保护的页面时,只有你检查过他们的身份证明后,他们才可以访问。缺省状态的设置确保了每个人在进入网页之前都经过了身份验证。

  在global.asa文件中,Session_OnStart事件里,填写以下代码

  在global.asa文件中,Session_OnStart事件里,填写以下代码

< SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Session_OnStart

……

……

’ This is the default authentication status

Session(“Authenticated”) = 0

END SUB

< /SCRIPT>

  切记验证身份状态的设置是一件非常重要的事物,请不要忘记。
步骤3:创建一个用户登录页

  这是一个ASP网页,里面是HTML的内容。我们把这一页取名叫login.asp,为了方便起见,下面给出了示例代码:

< HTML>

< BODY BGCOLOR=FFFFFF>

< FORM ACTION=“verify.asp” METHOD=POST>

Name:

< INPUT TYPE=TEXT SIZE=20 NAME=USERNAME>

Password:

< INPUT TYPE=PASSWORD SIZE=20 NAME=USERPASSWORD>

< INPUT TYPE=SUBMIT VALUE=“Login Now”>

< /BODY>

< /HTML>

  它包含了1个有2个输入框的表格。这些输入框用于收集用户的用户名和用户密码。收集到的信息我们用POST方式交给verify.asp来处理,以便我们来验证这个用户有没有经过受权。

  步骤4:为这个数据库创建系统型ODBC数据源(DSN)

  为了访问userinfo.mdb这个数据库,我们需要创建系统型ODBC数据源(DSN)。如果你非常熟悉ASP的话,你可以选择你自己的数据源(DSN)项目。要创建系统型ODBC数据源(DSN),你需要做以下步骤:

  *打开你的电脑中的控制面板(在Windows95/NT中的开始..设置菜单里)

  *选择“32位ODBC”

  *选择“System DSN”

  *选择“添加”。再选择“Microsoft Access Database Driver”,单击“完成”

  *给数据源(DSN)取个名字,在“数据库”设定中取名为“LoginDSN”,单击“选择”后指出userinfo.mdb数据库所在的确切路径。

  *单击确定按钮

  通过这个步骤,在你的电脑里创建了一个名为“LoginDSN”的系统型ODBC数据源(DSN),并指出了所选用userinfo.mdb数据库的确切位置。

  步骤5:创建验证页

  这就是我们在步骤3中看到的verify.asp页。在这一页中,我们将验证用户是否有效。我们从login.asp页获得了用户的信息(还记得那些输入框的表格吗?)
我们的目的是:

  *验证用户是否经过授权并根据结果设置相应的验证状态

  *如果用户是经过授权的,验证状态置1

  *如果用户是没有授权的,验证状态置0

下面显示的是verify.asp页的代码,你可以根据实际情况作一些相应的修改。

< %

’ Create a command object. This object serves to run our queries

Set Cm = Server.CreateObject(“ADODB.Command”)

’ Specify the system DSN path

Cm.ActiveConnection =“LoginDSN”

’ Now it’s time for the query. We need to check the user information

’ against the table tUsers

Cm.CommandText=“SELECT * FROM tUsers WHERE ”& _

“UserName=’”& Request.Form(“UserName”) &“’ AND ”& _

“UserPassword=’” & Request.Form(“UserPassword”) & “’”

’ Set the query type. 1 means it is a SQL statement

Cm.CommandType = 1

’ Retrieve the results in a recordset object

Set Rs = Cm.Execute

’ We now check if the user is valid. If user is valid, the recordset MUST

’ haverecord. Otherwise it is empty. If user exists, we set authentication

’ status to 1 and send the user to appropriate page, say welcome.asp.

’ Else send the user back to login.asp

If Rs.EOF Then

Session(“Authenticated”) = 0

Response.Redirect (“login.asp”)

Else

Session(“Authenticated”) = 1

Response.Redirect (“welcome.asp”)

End If

% >
步骤6:检查验证状态

  这是我们系统中的一个重要的部分。我们要在每个受到保护的页面上,检查用户的验证状态。这个做起来很简单。只要检查用户的验证状态是否为1即可,如果不是1则把用户重新送到login.asp页。示例代码如下

< %

If Session(“Authenticated”) = 0 Then

Response.Redirect (“Login.asp”)

End If

% >

  你还可以用另一种方法。把上面的代码拷贝到一个叫check.inc的文件中,再把下面这行代码包含到需要保护的页面的头部。

  如果你有很多页面需要保护,你只需把这行代码写到每一个需要保护的网页的头部即可。

  上述6个步骤将帮助你创建一个简单的用户登录系统。但请记住这个系统只是保护一个虚拟的目录,而不是整个的网站。你需要为每个你想要保护的虚拟路径创建一个。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
16,935.550ms