ASP 代码给 ASP 页加密码保护

本任务的内容
概要
创建应用程序
测试应用程序
其他注意事项
疑难解答
参考
概要
本文演示如何编写简单的 Active Server Pages (ASP) 代码来通过登录页对访问进行限制。 本文介绍的都是一些简化的方法。 如想获得更多的功能或更可靠的安全性,请参见本文末尾的“参考”一节。

在本示例中,您将创建下面两个 ASP 页:
MyPage.asp: 此页是受保护的,如果不提供正确的用户名和密码,则不能访问此页。
Logon.asp: 此页提供了一个窗体,用户可将其凭据键入此窗体中。 该窗体接着就会验证用户的用户名和密码。 如果用户名和密码正确,它就向客户机写入一个 Cookie,此 Cookie 就成了访问其他 ASP 页的“钥匙”。
返回页首
创建应用程序
使用“记事本”创建这些 ASP 页。 要启动“记事本”,请从 Windows 开始菜单上,指向程序,指向附件,然后单击记事本。 将每个文档保存到本地 Web 服务器的根 Web 目录(通常是 C:/InetPub/Wwwroot/)下。 如要更改文档的位置,则还必须对这些文件中的脚本进行相应的修改。
Logon.asp
在“记事本”中,单击文件菜单中的新建。
选中以下代码,右键单击选中的内容,然后单击快捷菜单中的复制。在“记事本”中,单击编辑菜单上的粘贴以便将以下代码粘贴到“记事本”中:
<html>
<head>
<title>Logon Form</title>
<%
Username="Administrator"
Password="Admin"
Validated = "OK"
if Strcomp(Request.Form("User"),Username,1)=0 AND Request.Form("password") = Password then
'Set the validation cookie and redirect the user to the original page.
     Response.Cookies("ValidUser") = Validated
     'Check where the users are coming from within the application.
     If (Request.QueryString("from")<>"") then
Response.Redirect Request.QueryString("from")
else
'If the first page that the user accessed is the Logon page,
         'direct them to the default page.
           Response.Redirect "MyPage.asp"
     End if    
Else
' Only present the failure message if the user typed in something.
     If Request.Form("User") <> "" then
         Response.Write "<h3>Authorization Failed.</h3>" & "<br>" & _
         "Please try again.<br> <br>"
     End if
End if
%>
</head>
<body bgcolor="#FFFFFF">
<FORM ACTION=<%Response.Write "Logon.asp?"&Request.QueryString%> method="post">
<h3>Logon Page for MyPage.asp</h3>
<p>
Username:
<INPUT TYPE="text" NAME="User" VALUE='' size="20"></INPUT>
Password:
<INPUT TYPE="password" NAME="password" VALUE='' size="20"></INPUT>
<INPUT TYPE="submit" VALUE="Logon"></INPUT>
</FORM>
</body>
</html>
将此页在 C:/InetPub/Wwwroot/ 文件夹中保存为 Logon.asp。
MyPage.asp
MyPage.asp 是您想要保护的页。 您可以使用具有 .asp 文件扩展名的任何页。
在“记事本”中,单击文件菜单上的新建。
选中以下代码,右键单击选中的内容,然后单击快捷菜单中的复制。在“记事本”中,单击编辑菜单上的粘贴以便将以下代码粘贴到“记事本”中:
<%
Validated = "OK"
if Request.Cookies("ValidUser") <> Validated then
'Construct the URL for the current page.
     dim s
     s = " http://";
     s = s & Request.ServerVariables("HTTP_HOST")
     s = s & Request.ServerVariables("URL")
     if Request.QueryString.Count > 0 THEN
s = s & "?" & Request.QueryString
end if
     'Redirect unauthorized users to the logon page.
     Response.Redirect "Logon.asp?from=" &Server.URLEncode(s)
End if
%>
<html>
<head>
<title>My Protected Page</title>
</head>
<body>
<p align="center">This is my secret information<br>
You cannot see it unless you<br>
are properly logged on!</p>
</body>
</html>
将此页在 C:/InetPut/Wwwroot/ 文件夹中保存为 MyPage.asp。
返回页首
测试应用程序
打开 Web 浏览器。 如果您使用的是 Microsoft Internet Explorer,请从 Windows 开始菜单上,指向程序,然后单击 Internet Explorer。
在“地址”栏中键入下面的地址,然后按 ENTER 键:
http://localhost/MyPage.asp ;
您会注意到,您被重定向到 Logon.asp。
键入 Logon.asp 文件中 ASP 代码中包含的用户名和密码信息(用户名:Administrator,密码:Admin),然后单击登录。 这样您就应当可以看到 MyPage.asp 页了。
请再键入一个错误的用户名或密码,以确认您无法登录,因而也就不能浏览到 MyPage.asp。
返回页首
其他注意事项
如想保护其他 ASP 页,请将以下代码添加到 ASP 页的顶部,位于其他所有代码之前:
<%
Validated = "OK"
if Request.Cookies("ValidUser") <> Validated then
'Construct the URL for the current page.
     dim s
     s = " http://";
     s = s & Request.ServerVariables("HTTP_HOST")
     s = s & Request.ServerVariables("URL")
     if Request.QueryString.Count > 0 THEN
s = s & "?" & Request.QueryString
end if
     'Redirect unauthorized users to the logon page.
     Response.Redirect "Logon.asp?from=" &Server.URLEncode(s)
End if
%>
若要登录并重定向到所请求的受保护页,必须让超链接指向此页面而非 Logon.asp 页。 在本例中,要确保超链接指向 MyPage.asp。如果您未登录,则此页中包括的代码将使您自动重定向到 Logon.asp。
如果确实想让您站点的访问者每次访问时都登录,则可以将 ValidUser 这一 Cookie 保存到他们的计算机上,以便他们下次访问时能使用此信息。 一旦会话超时或您关闭浏览器窗口,前面的代码就会导致 Cookie 过期。 如想设置 Cookie 的过期期限,请在 Logon.asp 中将下面的代码
         Response.Cookies("ValidUser") = Validated
改为:
         Response.Cookies("ValidUser") = Validated
         Response.Cookies ("ValidUser").Expires = DATE + 1
若要指定过期期限,可将“1”改为所需的天数。 例如,下面的代码会使 Cookie 在您的计算机上保留一年后过期:
         Response.Cookies ("ValidUser").Expires = DATE + 365
如果您设置了过期日期,则 Cookie 将保存到最终用户的计算机上,这样此用户以后就可以绕过登录页。 不过,如果该用户是从另一台计算机上浏览到该站点的,则此 Cookie 就会保存到那一台计算机上,这样别人就有可能读到并复制此信息。
返回页首
缺陷
ASP 登录页可以用于很多应用程序,但它不能提供最高的安全性。 一般来说,NTFS 是最安全的。 NTFS 要求用户键入 Microsoft Windows 可识别的用户名和密码。 NTFS 安全机制可用来为硬盘上的文件和文件夹设置访问权限。

另外,ASP 安全性以 Microsoft Internet Information Server (IIS) 安全性为基础。 如果未能妥善设置 IIS,而您添加了 ASP 安全功能,那么您不能防止高级用户访问您的站点。

有关 IIS 和 ASP 安全性的更多信息,请参见“参考”一节。
前面那段代码只允许使用一组用户凭据。 下面的 Microsoft 知识库文章演示了如何使用一种在数据库中保存了许多用户名的 ASP 登录页:
Q299987 HOW TO: Use Database and ASP Sessions to Implement ASP Security(使用数据库和 ASP 会话实现 ASP 安全)
如果您为 Cookie 设置了过期日期,则此 Cookie 就保存在浏览您的页面时使用的那台计算机上。 如果有人从咖啡馆里的计算机等公用计算机上浏览您的页面,那么 Cookie 就保存在此计算机上,于是其他人就有可能读到并复制此信息。 如果不设置过期日期,则 Cookie 就不会保存到计算机的硬盘上(它只存储在内存中),而且一旦浏览器关闭它就会从计算机的内存中被删除。
返回页首
参考
相关 Microsoft 知识库“How To”文章
Q299987 HOW TO: Use Database and ASP Sessions to Implement ASP Security(使用数据库和 ASP 会话实现 ASP 安全)
CHS299970 HOW TO: 使用 NTFS 安全保护在 IIS 4.0 或 5.0 上运行的 Web 页
Microsoft 安全参考
Microsoft 安全
http://www.microsoft.com/security/ ;

TechNet Web 站点安全
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/security/Default.asp ;
如果上述 TechNet 链接失败,请通过下面的地址浏览到 TechNet 主页:
http://www.microsoft.com/technet/default.asp ;
在左窗格中,指向 Security(安全),然后单击 Web Site( Web 站点)。
通用安全参考
白皮书: Implementing a Secure Site with ASP(使用 ASP 实现安全的站点)
http://www.microsoft.com/serviceproviders/whitepapers/impl_secure_asp_p10674.asp ;
Q164882Practical Recommendations for Securing Internet-Connected Windows NT Systems(关于加强通过 Internet 连接的 Windows NT 系统安全性的实用建议)
Q282060 Resources for Securing Internet Information Services(用于加强 Internet 信息服务安全性的资源)
Q271071 Minimum NTFS Permissions Required for IIS 5.0 to Work(IIS 5.0 工作所需的最低 NTFS 权限)
Q174811Authentication and Security White Paper for Internet Developers(面向 Internet 开发人员的身份验证和安全性白皮书)
Q229694 How to Use the IIS Security "What If" Tool(如何使用 IIS 安全“What If”工具)
Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions(ASP 和 ISAPI 扩展中对象的安全问题)
专用安全参考
Q239120 Create a Secure FTP Directory that Uses Password Authentication(创建使用密码验证的安全的 FTP 目录)
Q216705 How to Set Permissions on a FrontPage Web on IIS(如何在以 IIS 为基础的 FrontPage Web 上设置权限)
Q280383 IIS Security Recommendations When You Use a UNC Share and Username and Password Credentials(使用 UNC 共享和用户名及密码凭据时的 IIS 安全建议)
Q176378 HOWTO: SQL Server with Integrated Security, IIS on Same Machine(使用集成安全性的 SQL Server 和 IIS 在同一台计算机上)
Q260985 XIMS: Minimum NTFS Permissions Required to Use CDONTS(使用 CDONTS 所需的最低 NTFS 权限)
CHS257685 Proxy Server 2.0 安全性清单
Q165340 Change Permissions Needed on Index Server System Files(更改索引服务器系统文件所需的权限)
CHS235874 Proxy Server 2.0 需要的 Windows NT 文件系统 (NTFS) 权限
返回页首
First Published: Jun 12 2001 12:16PM
关键字 kbASPObj kbScript kbSecurity kbServer kbVBScript kbWebServer kbGrpDSASP kbDSupport kbCodeSnippet kbSysAdmin kbHOWTOmaster kbhowto  


Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值