副标题[/!--empirenews.page--]
????一、概述
????一直以来,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
(编辑:应用网_常德站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|