自從asp(Active Server Pages)問世以來,因其可以創建健壯易于維護、與平臺無關的應用系統,ASP技術受到了越來越多網絡程序員的喜愛,使用ASP從事WEB開發的人也越來越多。但ASP只是一種非編譯型的、在服務端運行的腳本語言,采用明文(plain text)方式來編寫,即使采用了ASP加密程序對ASP源碼進行加密,也不一定能保證發布到運行環境中去的ASP應用程序不被非法拷貝。對于高權限的管理員,可以輕而易舉從服務器端拷貝出ASP程序應用到別的非授權網站。這樣給ASP應用商業化帶來了一定的困難。如何有效保護開發出來的ASP程序,本文基于磁盤序列號產生的隨機性,結合微軟官方免費提供的ASP腳本加密程序SCRENC.EXE,很好地解決了這個問題。
<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獲得當前盤盤符 testDrive=Left(testDrive,3) set f=fs.getdrive(testDrive) '調用GetDrive方法,將驅動器賦予一個變量 MySQL="SELECT * From driveinfo where id=1" set rsCheck = Server.CreateObject("ADODB.Recordset") rsCheck.open Mysql,conn,1,1 FSER=trim(f.serialnumber) '獲得當前盤序列號 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>") '作為演示,本程序把當前盤序列號列出來(16進制) set f=nothing set fs=nothing %> </html>
2、在合法用戶可以訪問的各個ASP文件頭部,添加如下代碼:
<% if Session("pass")=false then '對Session變量進行判定,非法則跳出本ASP文件 response.redirect("fail.htm") end if %>