天天看點

用Script Encoder加密你的ASP頁面

用Script Encoder加密你的ASP頁面

    一直以來,ASP技術受到了越來越多朋友的喜愛,使用ASP從事WEB開發的人也

越來越多。ASP一個非常明顯的特征是頁面在伺服器端經過處理之後發送到浏覽器

中的内容為标準的HTML格式,這樣有效的保護了頁面程式的原代碼不被用戶端輕易

擷取。但是另一個普遍存在的問題是:

由于ASP頁面是純文字的形式存放,在伺服器端可以輕易看到全部程式設計邏輯。這樣

給ASP應用商業化帶來了一定的困難。解決的方法一般是使用元件技術将程式設計邏輯

封裝入DLL之中,但問題是:

    1、如果每段代碼都元件化似乎工作量太大了,也沒有必要。

    2、還有很多網友根本就不會編寫元件。

在這樣的背景下,微軟推出了Script Encoder1.0。一個指令行的腳本加密工具。

    Script Encoder的特點是:

    它隻加密頁面中嵌入的腳本代碼,其他部分,如HTML的TAG仍然保持原樣不變。

處理後的檔案中被加密過的部分為隻讀内容,對加密部分的任何修改都将導緻整個

加密後的檔案不能使用。Script Encoder加密過的ASP檔案還将使Script Debugger

之類的腳本調試工具失效。

    Script Encoder是可以對Client Side Script加密,也可以對Server Side

Script加密。

二、使用簡介

    Script Encoder是個指令行工具,執行檔案為SCRENC.EXE。它的操作非常簡單:

SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile

    /s                  可選。讓Script Encoder“安靜”的工作,即執行過程

                        沒有螢幕輸出。(

    /f                  可選。指定輸出檔案是否覆寫同名輸入檔案。忽略,将

                        不執行覆寫。

    /xl                 可選。是否在.asp檔案的頂部添加@Language指令。忽略,

                        将添加。

    /l defLanguage      可選。指定Script Encoder加密中選擇的預設腳本語言。

                        檔案中不包含這種腳本語言特性的腳本将被Script Encoder

                        忽略。對于HTML和腳本檔案來說,JScript為内置預設腳

                        本語言。對于ASP檔案,VBScript為預設腳本語言。同時

                        對于擴充名為.vbs或.js的檔案Script Encoder有自适應

                        能力。

    /e defExtension     可選。指定待加密檔案的檔案擴充名。預設狀态下,Script

                        Encoder能識别asa,asp,cdx,htm,html,js,sct和vbs檔案。

三、常見問題和注意事項

  1、在JOY ASP中幾次看到有網友使用Script Encoder時出現如下錯誤:   

     "Script Encoder object <"Scripting.Encoder"> not found "

     其原因:是使用Script Encoder需要Script Engine 5.0或以上腳本引擎的支援。

     解決的辦法有兩個,更新浏覽器到IE5或安裝Script Engine 5.0。

  2、在加密Global.asa時,加密完成後通路出現:

     Active Server Pages 錯誤 'ASP 0137'

     無效通用腳本

     global.asa, 行1

     Script 塊必須是允許的 Global.asa 過程之一。< %...% > 中的 Script 原語不

     允許在 global.asa 檔案中。允許的過程隻能是 Application_OnStart ,

     Application_OnEnd , Session_OnStart , 或 Session_OnEnd。

     加密後的global.asa檔案為:

     <%@ LANGUAGE = VBScript.Encode %><SCRIPT LANGUAGE=VBScript.Encode

     RUNAT=Server>#@~^nAIAAA==@#@&?i~Pzww^k1CYbWU{}xjOmDY@#@&@#@&BP</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^OgEAAA==@#@&?i~Pzww^k

     1CYbWU{}x3U9@#@&@#@&P,P?O~sbVr8Ln^DPxPUnD7+. ;D+COr==^#~@</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^DQMAAA==@#@&?i~PU+/kk

     KU{}xjYmDO@#@&@#@&E~NnJ*Px~rCl1V+MJ@#@&3Hf,?`A@#@&ftEAAA==^#~@</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^WwIAAA==@#@&?i~PU+/kk

     KU{}x3x9@#@&(6P?d/bWxvEj{!/DmmG[JbP@!@*PrCC^0+DE~:tnx@#@&</SCRIPT>

     出現這個錯誤的原因是:在加密完的global.asa檔案頂部被寫入了

     <%@ LANGUAGE = VBScript.Encode %>

     解決的辦法是手動删去這一行或者使用/xl參數加密即可。

  3、Script Encoder對Remote Scripting無效。

四、總結

    根據我個人的體會,Script Encoder還是比較好用的。使用簡單,加密後的腳本運

行也比較穩定。不過這個東西僅僅是阻止了你随意的檢視腳本原代碼,估計相應的解密

工具不久就會出來的。是以建議可能的話,大家還是花點時間學習一下元件技術,我覺

得可以将這兩個結合起來運用的。正如微軟的文檔所說:Setting an engine to deal

with encoded script is only one side of the equation. How do you encode your

script? There are two mechanisms to do this: a command-line script encoder

and a COM-based object model... 

附:

Script Encoder 下載下傳位址:

http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe

Windows Script Engine 5.0

Windows 95, Windows 98 & Windows NT 4.0 - CHS 中文版 下載下傳位址:

http://www.microsoft.com/msdownload/vbscript/scripting.asp?msid=32186&plat=x86

     &lang=Chinese/Simplified

繼續閱讀