加密|指令碼|原始碼
目前,ASP(Acive Server Pages)技術已風靡全球,在Internet上幾乎處處都能看到它的身影。它給開發商提供了基於指令碼的直觀、快速、高效的應用開發手段,極大地提高了開發的效果。應用這種技術,不需要進行複雜的編程,就可以開發出專業的動態Web網站。
凡事有利必有弊,由於由於ASP指令碼是採用明文(plain text)方式來編寫出來的,所以開發人員辛辛苦苦開發出來的ASP應用程式,一旦發布到運行環境中去或交付使用者使用後,就很難保證這些“原始碼”不會被流傳出去。我們如何能保護我們開發出的ASP原始碼呢?
在這裡我們採用微軟提供的一個加密指令碼的程式:SCRENC.EXE,這個程式可以在筆者網站(http://www.zhengwei.net)上下載。這是一個運行在DOS PROMAPT的命令工具,它使指令碼設計者可以對最終的指令碼進行編碼,從而使 Web 主機和 Web 客戶不能查看或修改它們的原始碼。不過有一點需要注意的是加密後的程式要求使用者的遊覽器必須使用Internet Explorer 5.0以上的版本。加完密後的指令碼變成類似於如下的內容:
指令碼加密程式只對指令碼代碼進行加密,檔案的其他內容不動且以普通文本形式顯示。要使用指令碼加密程式,以通常方法對文本進行開發和調試,然後使用該公用程式對最終的指令碼進行加密。 指令碼加密程式在原始碼中使用標記來標識加密開始的位置。
對於 Visual Basic Scripting Edition (VBScript),如下樣本顯示了如何使用編碼標記來顯示普通文本的著作權資訊:
在 JScript 中,加密標記如下:
當指令碼加密程式被調用時,在開始標記前,指令碼塊內的內容保持不變,而其他內容被加密。因此,如果開始標記被省略,則指令碼編碼塊內的所有內容均被加密,但如果開始標記在指令碼加密塊的最後,則不對任何內容進行加密。
在編碼發生後。您應該知道標記或<% ... %>標記內包含有效 HTML 和內嵌指令碼塊。使用該格式的應用程式套件組合括 Microsoft? Internet Information Services (IIS)。識別副檔名有 .asp、.asa 和 .cdx。
HTML。該格式由一個包含有效 HTML 和內嵌指令碼塊的文字檔組成。使用該指令碼格式編寫的應用程式套件組合括 Microsoft FrontPage?, Microsoft? Visual InterDev? 和所有虛擬 Web 設計器及瀏覽器。識別副檔名有 .htm 和 .html。
普通文本。該格式由只包含指令碼而無兩端標記的文字檔組成。使用該指令碼格式編寫的應用程式套件組合括 Windows? Scripting Host (WSH) 和 Microsoft? Outlook?。 識別副檔名有 .js 和 .vbs,經加密後,分別變為 .jse 和 .vbe。
指令碼小程式。該格式由一個在標記中包含有效指令碼小程式的文字檔組成。識別副檔名有 .sct 和 .wsh。
樣本
如下是使用指令碼加密程式的一個例子以及對其結果的簡單解釋:
對輸入檔案 test.html 進行加密,產生輸出檔案 encode.html,使用:
screnc test.html encode.html
對輸入檔案 test.htm 進行加密,並用編碼後的輸出檔案覆蓋輸入檔案,使用:
screnc /f test.htm
對目前的目錄中的所有 .ASP 檔案進行加密,並把編碼後的輸出檔案放在c:\temp中,使用:
screnc *.asp c:\temp
對目前的目錄中的所有 .ASP 檔案進行加密,並把編碼後的輸出檔案放在c:\temp中,使用:
screnc /e asp *.* c:\temp
對輸入檔案 test.htm 進行加密,並產生輸出檔案 encode.htm,確保沒有指定語言屬性的指令碼塊使用 VBScript,使用:
screnc /l vbscript test.htm encode.htm
對目前的目錄中的所有指令碼小程式檔案進行加密,並不經資訊顯示就用編碼後的檔案覆蓋這些檔案,使用:
screnc /s /f *.sct
要點 :經過編碼後,如果您改動加密後的文本,哪怕只改動一個字。指令碼的完整性就會丟失,從而不能再使用。