ASP如何實現(xiàn)動態(tài)網(wǎng)頁加密

在建立網(wǎng)站的過程中,有些網(wǎng)頁只允許會員或特定人員可以瀏覽,這種網(wǎng)頁被稱為加密網(wǎng)頁。加密網(wǎng)頁的方法很多,如:直接用客戶端scriPt程序而不用數(shù)據(jù)庫進(jìn)行的加密、用CGI程序進(jìn)行的加密等。前者由于在客戶端執(zhí)行而使加密的網(wǎng)頁很脆弱,后者編程復(fù)雜需要有豐富的編程經(jīng)驗,使得這兩種方法對于一般的網(wǎng)頁設(shè)計者來說都不是最佳的選擇。那么我今天就給大家推薦一個比較簡便的方法:利用ASP自帶的內(nèi)部對象對數(shù)據(jù)庫進(jìn)行操作,來驗證密碼和用戶名的正確與否,從而達(dá)到動態(tài)網(wǎng)頁加密的目的。

ASP如何實現(xiàn)動態(tài)網(wǎng)頁加密

ASP簡介:

ASP是Mierosoft提出的一種服務(wù)器端的命令執(zhí)行環(huán)境。在微軟的文件中把ASP描述為:“一個服務(wù)器的腳本環(huán)境,在這里可以生成和運(yùn)行動態(tài)的、交互的、高性能的Web服務(wù)器應(yīng)用程序?!?/p>

從這段描述中可以看出,ASP既不是一種語言,也不是一種開發(fā)工具,而是一種技術(shù)框架,其主要功能是為生成動態(tài)的交互的Web服務(wù)器應(yīng)用程序提供一種功能強(qiáng)大的方法或技術(shù)。ASP的主要功能是把HT ML、腳本、組件等有機(jī)地組合在一起,形成一個能夠在服務(wù)器上運(yùn)行的應(yīng)用程序,并把按用戶要求專門制作的標(biāo)準(zhǔn)H TML頁面送給客戶端瀏覽器。

ASP屬于Act iveX技術(shù)中的服務(wù)器端技術(shù)。與通常在客戶端實現(xiàn)動態(tài)主頁的技術(shù)如Java applet、ActiveX Contil、V B Script、Java Script等所不同的是,A SP中的命令和腳本語句都是在服務(wù)器中解釋執(zhí)行,執(zhí)行后 的結(jié)果產(chǎn)生HTML頁面并送到瀏覽器。由于ASP是在服務(wù)器端解釋執(zhí)行,開發(fā)者可以不必考慮瀏覽器是否支持ASP。

一般,ASPWeb頁面可以同時包含下面幾個部分:

(1)普通HTM L文件:普通Web頁面的編程。

(2)客戶端Script程序代碼:<script>與</script>間的程序代碼。

(3)服務(wù)器端ASP ?Script程序代碼:位于<%.......%>間的程序代碼。

網(wǎng)頁加密:

網(wǎng)頁加密功能的實現(xiàn)由三個文件組成:users.mdb、codesecret.asp、cryptopage.asp。users.mdb是存放“用戶名稱/密碼”的Access數(shù)據(jù)庫。codesecret.asp是加密網(wǎng)頁的精髓,該程序?qū)崿F(xiàn)“用戶名稱/密碼”輸人表單的制作及密碼驗證等功能。cryptopage.asp是需要加密的網(wǎng)頁,下面我們將對這三個文件分別介紹。

1、加密的users.mdb數(shù)據(jù)庫

users.mdb是使用Access加密的數(shù)據(jù)庫,建立步驟如下:

(1)啟動Access“文件→新建”選擇合適目錄輸人文件名為users.mdb,然后按“確定”鍵建立數(shù)據(jù)庫一users.mdb 。

(2)建立表users:使用表設(shè)計器創(chuàng)建表,該表只包含兩個字段,如下所示:

(3)接著選菜單“工具→安全→設(shè)置數(shù)據(jù)庫密碼”。

(4) ? 在ASP程序中如何啟動含有密碼的數(shù)據(jù)庫呢?

在connectio n對象的Ope n方法中增加pwd的參數(shù)即可。

2、網(wǎng)頁加密的核心: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>

重點(diǎn)是<FORM>標(biāo)記的Act ion參數(shù),一般來說,我們會指定給它某一個.asp文件名稱,例如:codesecret.asp,在此則指定成:Request.Server variables(“PATH_INFO”);如果codesecret.asp被含入cryptopage.asp,則這個參數(shù)得到cryptopage.asp,如果codesecret.asp被含入cryptopage.asp,則這個參數(shù)得到cryptopage.asp,所以無論codesecret.asp文件被包含進(jìn)哪一個網(wǎng)頁,以上語句都能得到正確的.asp文件名稱。

(2)密碼驗證函數(shù)

接下來是實現(xiàn)密碼驗證的函數(shù),這個函數(shù)的變量包括ID(用戶名稱)及PWd(密碼),若驗證通過返回TRUE,否則返回FALSE,內(nèi)容如下:

<%

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

%>

這段程序的關(guān)鍵點(diǎn)是:users.mdb是一個加密的數(shù)據(jù)庫,所以啟動時必須有“Pwd= sbh”參數(shù);用Select選取符合條件的數(shù)據(jù)記錄,若為0則表示ID/Pwd是錯誤的,返 回False,否則表示ID/Pwd是正確的,返回True。

(3)密碼驗證與登錄表單的結(jié)合

下面的這段服務(wù)器端執(zhí)行的程序?qū)崿F(xiàn)密碼驗證與輸人表單的結(jié)合:

<%

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、需要加密的網(wǎng)頁cryptopage.asp

實際上,cryPtopage.asp可以是任何已制作好的.asp網(wǎng)頁,如想對該網(wǎng)頁加密,只需把users.mdb和codesecret.asp復(fù)制到Cwptopage.asp所在的目錄下,并在文件頭加人下列語句:

<!一# includefile=”codesecret.asp”→即可實現(xiàn)對網(wǎng)頁的加密。

程序清單

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一這是加密網(wǎng)頁<HR></ H2>

<P>在原始碼的最前面加上以下標(biāo)識: </ P>

<P> <FONT COLOR=”# FF0000">& It ;!一#in cludefile =& quot ;

<B>code secret.asp</ B>& quot ;一& gt; </FONT> </ P>

<P>就已經(jīng)具備加密的功能。

<HR WID TH=”100%”> </ P>

</ B ODY>

</ HTML>

本文網(wǎng)頁加密的關(guān)鍵是code secret.asp程序,要做到正常運(yùn)行,必須使得users.mdb數(shù)據(jù)庫中的表users的字段名稱與Code secret.asp引用的字段名稱相一致。一旦user.mdb與code se eret.asp兩個文件正確建立后,就可以對任何.asp文件加密。

小知識之動態(tài)網(wǎng)頁:

是與靜態(tài)網(wǎng)頁相對應(yīng)的,也就是說,網(wǎng)頁 URL的后綴不是htm、html、shtml、xml等靜態(tài)網(wǎng)頁的常見形動態(tài)網(wǎng)頁制作專家式,而是以aspxasp、sp、php、perl、cgi等形式為后綴,并且在動態(tài)網(wǎng)頁網(wǎng)址中有一個標(biāo)志性的符號——“?”。