磁碟ID在ASP原始碼防拷貝中的應用

2021-04-01 07:12:03 字數 3179 閱讀 1259

自從asp(active server pages)問世以來,因其可以建立健壯易於維護、與平台無關的應用系統,asp技術受到了越來越多網路程式設計師的喜愛,使用asp從事web開發的人也越來越多。但asp只是一種非編譯型的、在服務端執行的指令碼語言,採用明文(plain text)方式來編寫,即使採用了asp加密程式對asp原始碼進行加密,也不一定能保證發布到執行環境中去的asp應用程式不被非法拷貝。對於高許可權的管理員,可以輕而易舉從伺服器端拷貝出asp程式應用到別的非授權**。這樣給asp應用商業化帶來了一定的困難。如何有效保護開發出來的asp程式,本文基於磁碟序列號產生的隨機性,結合微軟官方免費提供的asp指令碼加密程式screnc.exe,很好地解決了這個問題。

上述思想用vc、vb及deliphi程式語言都容易實現,那麼,在asp中又如何實現呢?vbscript作為一種健壯的、安全的使用者語言,是受客戶機系統限制的,不能處理客戶機上api的呼叫,也不能直接操縱客戶機上的檔案和檔案系統之外的控制項。因而本文採用vbscript並結合asp內建元件filesystem來實現上述思想。 以下程式根據具體情況略加修改,可以應用於實際的asp應用系統。

作為講解例項,本文用到access資料庫安全機制,實際應用中,可以用其它格式的檔案存放的資料。為便於闡述,我們先建乙個access資料庫id.mdb(密碼為"kxj"),內建乙個driveinfo表,資料結構如下:

id(自動編號) ;

serno(文字,12,磁碟序列號(10進製)) ;

wrimark(數字,1,寫盤標誌,)。

說明 wrimark 值為0代表合法使用者未安裝系統,值為1代表該系統已安裝。當值為1且序列號與當前盤不符時,則判定為非法拷貝使用者。

初始化時先定義乙個新記錄,各欄位初始值分別為1,12345678,0。

在同一目錄下,例如c:/interpub/root下,放置首頁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")

set fs=server.createobject("scripting.filesystemobject")

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 r**ain = server.createobject("adodb.recordset")

mysql1="update driveinfo set serno="&fser&", wrimark=1"

r**ain.open mysql1,conn,1,2

response.write("<a href='success.asp'>setup

successful!wel***e to access the website!</a>")

set r**ain=nothing

else

if strserno=fser then

'若是合法使用者再次合法進入

session("pass")=true

response.write("<a href='success.asp'>you are authorized by the website manager,wel***e 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

%>3、用asp加密程式(例如微軟公司的screnc.exe,別的asp加密程式也可以)對各個asp檔案進行加密。

以上程式**在簡體中文nt4.0、iis3.0及簡體中文pwin9.8、pws4.0下通過。

ASP分頁技術原始碼

本程式檔名為 pages.asp 包含ado常量表檔案adovbs.inc,可從 program files common files system ado 目錄下拷貝 建立資料庫連線,這裡是oracle8.05資料庫 set conn server.createobject adodb.conne...

ASP分頁技術原始碼

asp分頁技術原始碼 頂熱 本程式檔名為 pages.asp 包含ado常量表檔案adovbs.inc,可從 program files common files system ado 目錄下拷貝 建立資料庫連線,這裡是oracle8.05資料庫 set conn server.createobje...

asp建站系統原始碼 為什麼原始碼建站適合做萬詞霸屏

首先要了解原始碼建站的好處 一 建站系統原始碼為企業帶來的好處 1 建站系統原始碼搭建成本低 原始碼其實就在降低成本上發揮了很大作用!而這款原始碼實現了傳統企業無法實現的高效益,低成本的經濟模式。2 建站系統原始碼可以資源整合 原始碼可以實現企業資源整合,在 管理方面也比較成熟,配送體系也更加的完整...