IT学习者 | 文章大全 | 技术文档 | 桌面壁纸 | 网络电台 | 成语 | 歇后语 | 站长导航 | 下载 | 周公解梦 | 生日密码 | 站长助手 | Flash | IP地址查询
 您现在的位置: 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 客户端无法查看或更改其源代码。注意,这种编码只能防止对您代码的一般性浏览,而无法防止专业黑客查看您的代码和实现方式。

相 关 文 章
相 关 软 件

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
加入收藏留言建议自助友情链接普通友情链接站长的Blog
版权所有   COPYRIGHT 2002-2009 ★IT学习者★ ALL RIGHTS RESERVED.