IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 实用查询 | 网络电台 | 成语 | 歇后语 | 网址 | 下载 | 周公解梦 | 生日密码 | 电视剧365 | Flash
 您现在的位置: IT学习者 >> 文章大全 >> 网络编程 >> ASP技术

加密你的ASP页面—Script Encoder初探

【 作者:IP浪子    来源:eNet硅谷动力  更新时间:2004-4-4 | 字体:

    一、概述

    一直以来,ASP技术受到了越来越多朋友的喜爱,使用ASP从事WEB开发的人也越来越多。ASP一个非常明显的特征是页面在服务器端经过处理之后发送到浏览器中的内容为标准的HTML格式,这样有效的保护了页面程序的原代码不被客户端轻易获取(当然MS的BUG不断那是另一回事了。^_^)。但是另一个普遍存在的问题是:由于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 yourscript? 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

ITlearner摘录时注释:

Script Encoder 下载地址:http://www.microsoft.com/downloads/release.asp?ReleaseID=33258

Script Encoder 是一个简单的命令行工具,脚本设计者可使用此工具对他们的最终脚本进行编码,从而使 Web 主机和 Web 客户端无法查看或更改其源代码。注意,这种编码只能防止对您代码的一般性浏览,而无法防止专业黑客查看您的代码和实现方式。

相 关 文 章
相 关 软 件
逃生 放生 黄玫瑰 想太多 那滋味 擦肩而过 放手去爱 北京欢迎你 依然在一起 吻得太逼真 感动天感动地 坐上火车去拉萨 怎么会狠心伤害我
心碎 冲动 小太阳 别碰我 蒲公英 千山万水 改变自己 一定要爱你 等爱的玫瑰 陷入爱里面 北极星的眼泪 最后一次的温柔 亲爱的那不是爱情
光荣 火花 坏女人 日不落 樱花草 为你写诗 独家记忆 夏天的味道 寂寞才说爱 忘不掉的伤 爱上你是个错 第三者的第三者 地球人都知道我爱你
假如 相思 是非题 有缘人 舍不得 我的答铃 死而无憾 外滩十八号 越爱越难过 123木头人 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2008 ★IT学习者★ ALL RIGHTS RESERVED.