直播中
上述思想用VC、VB及DELIPHI編程語言都容易實現(xiàn),那么,在ASP中又如何實現(xiàn)呢?VBScript作為一種健壯的、安全的用戶語言,是受客戶機系統(tǒng)限制的,不能處理客戶機上API的調(diào)用,也不能直接操縱客戶機上的文件和文件系統(tǒng)之外的控件。因而本文采用VBScript并結(jié)合ASP內(nèi)置組件FileSystem來實現(xiàn)上述思想。 以下程序根據(jù)具體情況略加修改,可以應(yīng)用于實際的ASP應(yīng)用系統(tǒng)。
作為講解實例,本文用到Access數(shù)據(jù)庫安全機制,實際應(yīng)用中,可以用其它格式的文件存放的數(shù)據(jù)。為便于闡述,我們先建一個Access數(shù)據(jù)庫ID.mdb(密碼為"kxj"),內(nèi)建一個DriveInfo表,數(shù)據(jù)結(jié)構(gòu)如下:
id(自動編號) ;
Serno(文本,12,磁盤序列號(10進制)) ;
Wrimark(數(shù)字,1,寫盤標志,)。
說明
Wrimark 值為0代表合法用戶未安裝系統(tǒng),值為1代表該系統(tǒng)已安裝。當(dāng)值為1且序列號與當(dāng)前盤不符時,則判定為非法拷貝用戶。
初始化時先定義一個新記錄,各字段初始值分別為1,12345678,0。
在同一目錄下,例如C:\INTERPUB\WWWROOT下,放置首頁Default.asp,合法用戶首頁Success.asp,非法安裝用戶提示頁Fail.htm及ID.mdb序列號存放庫。
各ASP文件的編寫操作如下:
1、用FrontPage(或NotePad),新建一個ASP文件Default.asp,錄入以下程序代碼:
<html>
<head>
<title>Sample</title>
</head>
<% dim conn,fs,f
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")
set fs=server.createObject("scripting.filesystemobject")
testDrive=Server.MapPath("/DRIVEINFO.ASP")
'通過MapPath獲得當(dāng)前盤盤符
testDrive=Left(testDrive,3)
set f=fs.getdrive(testDrive)
'調(diào)用GetDrive方法,將驅(qū)動器賦予一個變量
Mysql="SELECT * From driveinfo where id=1"
set rsCheck = Server.CreateObject("ADODB.Recordset")
rsCheck.open Mysql,conn,1,1
FSER=trim(f.serialnumber)
'獲得當(dāng)前盤序列號
StrSerno=trim(rsCheck.fields("SERNO"))
StrMark=rsCheck.fields("WRIMARK")
if StrSerno<>FSER and StrMark=0 then
'若是首次安裝,則置寫盤標志為1
session("pass")=true
'定義用戶Session,并置為全局ASP文檔標識變量
set rsMain = Server.CreateObject("ADODB.Recordset")
Mysql1="update driveinfo SET SERNO="&FSER&", WRIMARK=1"
rsMain.open Mysql1,conn,1,2
response.write("<a href='success.asp'>SETUP
SUCCESSFUL!WELCOME TO ACCESS THE WEBSITE!</a>")
set rsMain=nothing
else
if StrSerno=FSER then
'若是合法用戶再次合法進入
session("pass")=true
response.write("<a href='success.asp'>YOU ARE AUTHORIZED BY THE WEBSITE MANAGER,WELCOME TO ACCESS !</a>")
else
'非法拷貝用戶
session("pass")=false
response.write("<a href='fail.htm'>IT IS ILLEGAL TO COPY THE WEBSITE'S ASP DOCUMENT.YOU ARE NOT RIGRT TO USE THE PROGRAM.</a>")
end if
end if
response.write("<br>")
response.write("Volume Serial Number in drive "&testDrive)
response.write(f.serialnumber)
response.write("<br>")
response.write("Volume hex Serial Number in drive "&testDrive)
response.write(hex(f.serialnumber))
response.write("<br>")
'作為演示,本程序把當(dāng)前盤序列號列出來(16進制)
set f=nothing
set fs=nothing
%>
</html>
2、在合法用戶可以訪問的各個ASP文件頭部,添加如下代碼:
<% if Session("pass")=false then
'對Session變量進行判定,非法則跳出本ASP文件
response.redirect("fail.htm")
end if
%>
3、用ASP加密程序(例如微軟公司的SCRENC.EXE,別的ASP加密程序也可以)對各個ASP文件進行加密。
在DOS狀態(tài)下運行SCRENC -l vbscript source.asp destination.asp,即把源文件source.asp生成了包含密文ASP腳本的新文件destination.asp。SCRENC.EXE可以在微軟公司站點(http://www.microsoft.com免費下載)。
以上程序代碼在簡體中文NT4.0、IIS3.0及簡體中文PWIN9.8、PWS4.0下通過。