在建立网站的过程中,有些网页只允许会员或特定人员可以浏览,这种网页被称为加密网页。加密网页的方法很多,如:直接用客户端scriPt程序而不用数据库进行的加密、用CGI程序进行的加密等。前者由于在客户端执行而使加密的网页很脆弱,后者编程复杂需要有丰富的编程经验,使得这两种方法对于一般的网页设计者来说都不是最佳的选择。那么我今天就给大家推荐一个比较简便的方法:利用ASP自带的内部对象对数据库进行操作,来验证密码和用户名的正确与否,从而达到动态网页加密的目的。

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等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。