在建立网站的过程中,有些网页只允许会员或特定人员可以浏览,这种网页被称为加密网页。加密网页的方法很多,如:直接用客户端scriPt程序而不用数据库进行的加密、用CGI程序进行的加密等。前者由于在客户端执行而使加密的网页很脆弱,后者编程复杂需要有丰富的编程经验,使得这两种方法对于一般的网页设计者来说都不是最佳的选择。那么我今天就给大家推荐一个比较简便的方法:利用ASP自带的内部对象对数据库进行操作,来验证密码和用户名的正确与否,从而达到动态网页加密的目的。
ASP简介:
ASP是Mierosoft提出的一种服务器端的命令执行环境。在微软的文件中把ASP描述为:“一个服务器的脚本环境,在这里可以生成和运行动态的、交互的、高性能的Web服务器应用程序。”
从这段描述中可以看出,ASP既不是一种语言,也不是一种开发工具,而是一种技术框架,其主要功能是为生成动态的交互的Web服务器应用程序提供一种功能强大的方法或技术。ASP的主要功能是把HT ML、脚本、组件等有机地组合在一起,形成一个能够在服务器上运行的应用程序,并把按用户要求专门制作的标准H TML页面送给客户端浏览器。
ASP属于Act iveX技术中的服务器端技术。与通常在客户端实现动态主页的技术如Java applet、ActiveX Contil、V B Script、Java Script等所不同的是,A SP中的命令和脚本语句都是在服务器中解释执行,执行后 的结果产生HTML页面并送到浏览器。由于ASP是在服务器端解释执行,开发者可以不必考虑浏览器是否支持ASP。
一般,ASPWeb页面可以同时包含下面几个部分:
(1)普通HTM L文件:普通Web页面的编程。
(2)客户端Script程序代码:<script>与</script>间的程序代码。
(3)服务器端ASP Script程序代码:位于<%.......%>间的程序代码。
网页加密:
网页加密功能的实现由三个文件组成:users.mdb、codesecret.asp、cryptopage.asp。users.mdb是存放“用户名称/密码”的Access数据库。codesecret.asp是加密网页的精髓,该程序实现“用户名称/密码”输人表单的制作及密码验证等功能。cryptopage.asp是需要加密的网页,下面我们将对这三个文件分别介绍。
1、加密的users.mdb数据库
users.mdb是使用Access加密的数据库,建立步骤如下:
(1)启动Access“文件→新建”选择合适目录输人文件名为users.mdb,然后按“确定”键建立数据库一users.mdb 。
(2)建立表users:使用表设计器创建表,该表只包含两个字段,如下所示:
(3)接着选菜单“工具→安全→设置数据库密码”。
(4) 在ASP程序中如何启动含有密码的数据库呢?
在connectio n对象的Ope n方法中增加pwd的参数即可。
2、网页加密的核心:codesecret.asp
codesecret.asp文件又可分为以下子程序段:
(1)“用户名称/密码”的输人表单,程序片断如下:
<H TML>
<BODY BGCO LOR="#003399">
<H2 AllGN=CENTER> <%=Head%> <H R WIDTH="100%"> </ H 2>
<CENTER>
<FORM Action =<%=Request.ServerVariables("PATH_INFO")%>
<Method=POST>
<TABLE BORDER=0 CE LLSPACING=0>
<TR>
<TD ALIGN=RIGHT>用户名称:</ TD>
<TD> <Input Type =TextName=ID Siz e=10Value=<%=ID%> > </ TD>
</ TR>
<TR> <T D A LIGN=R IG H T>密码:</ TD>
<T D> <InPuttype=Password Name=PWd Siz e=10
Valu e =<%=Pwd%> > </ TD>
</ TR>
</ TABLE> <P>
<Inputtype =Subm it value="确定"‘>
</ FORM>
<HRWID TH="100%"></ CENTER>
</ BODY>
</ H TML>
重点是<FORM>标记的Act ion参数,一般来说,我们会指定给它某一个.asp文件名称,例如:codesecret.asp,在此则指定成:Request.Server variables(“PATH_INFO”);如果codesecret.asp被含入cryptopage.asp,则这个参数得到cryptopage.asp,如果codesecret.asp被含入cryptopage.asp,则这个参数得到cryptopage.asp,所以无论codesecret.asp文件被包含进哪一个网页,以上语句都能得到正确的.asp文件名称。
(2)密码验证函数
接下来是实现密码验证的函数,这个函数的变量包括ID(用户名称)及PWd(密码),若验证通过返回TRUE,否则返回FALSE,内容如下:
<%
FunctionC heckPwd(ID,PWd)
D im conn, Param, rs
Set conn =Server.Createobject("ADODB.Conn ection")
param="driver ={Mierosoft Access Driver(*.mdb)};
PWd=sbh"conn.OPenParam &";
dbq="& Server.MaPPath("userspwd.mdb")
sql="Select*From users Where ID="&ID &" And Pwd="&pwd&"
set rs=conn.Execute(sql)
If rs.EOF Then
CheckPwd=False
Else
CheckPwd=true
End
If EndFunction
%>
这段程序的关键点是:users.mdb是一个加密的数据库,所以启动时必须有“Pwd= sbh”参数;用Select选取符合条件的数据记录,若为0则表示ID/Pwd是错误的,返 回False,否则表示ID/Pwd是正确的,返回True。
(3)密码验证与登录表单的结合
下面的这段服务器端执行的程序实现密码验证与输人表单的结合:
<%
If Isempty (Session(”Passed”)) Then Session(”Passed”)=False
Head=”请输人您的信息”
ID=Request(”Id”)
pwd=Request(”PWd”)
If ID=””or Pwd=””Then
Head=”请输人您的信息”
Elself Not Check PWd(ID,Pwd) Then
Head=”用户名称或密码错误”Else
Session(”Passed”)=Thle
EndIf
If NotSession (”Passed”)Then
%>(HTML>
…输人表单程序部分
</ HTML>
<%
Renponse.End
End If
%>
3、需要加密的网页cryptopage.asp
实际上,cryPtopage.asp可以是任何已制作好的.asp网页,如想对该网页加密,只需把users.mdb和codesecret.asp复制到Cwptopage.asp所在的目录下,并在文件头加人下列语句:
<!一# includefile=”codesecret.asp”→即可实现对网页的加密。
程序清单
1、codesecret.a sp
<%
Fun ction CheekPwd(ID,Pwd)
Dimconn,Param,rs
Set conn=Server.Create object(”ADODB.Connection”)
param=”driver={Mierosoft Access Drive :(*.mdb)}:PWd=Sbh’’
conn.open param &”;dbq=”& Server.MapPath(”users PWd.mde”)
sql=”Select*From users WhereID=”& ID &”AndPwd=”& Pwd&”
Set rs= conn.Execute(sql)
If rs.EOF Then
Check Pwd=False
Else
Check pwd=True
End
If End
Function
%>
<%
If lsEmpty(Session(’‘passed”))ThenSession(”Passed”)=False
Head=”请输入您的信息”ID=Request(”ID”)
Pwd=Request(”Pwd”)
If ID=” or Pwd= ”Then
Head=”请输人您的信息”
Else lf
Not Cheek PWd(ID,PWd)Then
Head=”用户名称或密码错误”
Else
Session(”Passe”)=True
End If
If Not Session(”Passed”)The n
%>
<HT ML>
<BODY BGCOLOR:”#03399”>
<HZALIG=CENTER> <%=Head%> <HR WIDTH=”100%”></ H2>
<CENTER>
<ron MAction=<%=Request.ServerVariables(”PATH= INFO”)%>Method=POST>
<TABLE BORD ER=1CELLSPACING=0>
<TR>
<TD ALIGN=RICHT>用户名称:</ TD>
<TD> <InPut TyPe=TextName=ID Size =12
Value =<%=ID%> ></ TD>
</ TR>
<TR> <TDALIGN=RIG HT>密码:</ TD>
<TD> <InPut type =Password Name=Pwd Siz e =12
Valu e =<%=pwd %>></ TD>
</ TR>
</ TABLE> <P><Inputype=Subm it Value =”确定”>
</ FORM>
<HRWID TH=”100%”>
</ CENTER>
</ BODY>
</ HTML>
<%
Response.End
End If
%>
2、ptopage.asp:
<!一# include file ="ptopage.a sp"一>
<HTML>
<BODY BGCOLOR="‘# 003399">
<H2> conptopage.asp一这是加密网页<HR></ H2>
<P>在原始码的最前面加上以下标识: </ P>
<P> <FONT COLOR=”# FF0000">& It ;!一#in cludefile =& quot ;
<B>code secret.asp</ B>& quot ;一& gt; </FONT> </ P>
<P>就已经具备加密的功能。
<HR WID TH=”100%”> </ P>
</ B ODY>
</ HTML>
本文网页加密的关键是code secret.asp程序,要做到正常运行,必须使得users.mdb数据库中的表users的字段名称与Code secret.asp引用的字段名称相一致。一旦user.mdb与code se eret.asp两个文件正确建立后,就可以对任何.asp文件加密。
小知识之动态网页:
是与静态网页相对应的,也就是说,网页 URL的后缀不是htm、html、shtml、xml等静态网页的常见形动态网页制作专家式,而是以aspxasp、sp、php、perl、cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。