ASP如何實現動態(tài)網頁加密

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

ASP如何實現動態(tài)網頁加密

ASP簡介:

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

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

ASP屬于Act iveX技術中的服務器端技術。與通常在客戶端實現動態(tài)主頁的技術如Java applet、ActiveX Contil、V B Script、Java Script等所不同的是,A SP中的命令和腳本語句都是在服務器中解釋執(zhí)行,執(zhí)行后 的結果產生HTML頁面并送到瀏覽器。由于ASP是在服務器端解釋執(zhí)行,開發(fā)者可以不必考慮瀏覽器是否支持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:使用表設計器創(chuàng)建表,該表只包含兩個字段,如下所示:

(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)密碼驗證與登錄表單的結合

下面的這段服務器端執(zhí)行的程序實現密碼驗證與輸人表單的結合:

<%

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文件加密。

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

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