以文本方式查看主题 - 中文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> 切记验证身份状态的设置是一件非常重要的事物,请不要忘记。 这是一个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 % > 这是我们系统中的一个重要的部分。我们要在每个受到保护的页面上,检查用户的验证状态。这个做起来很简单。只要检查用户的验证状态是否为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 |