巧用ASP技术保护DHTML源代码
2001-8-18 动网先锋
DHTML使得我们能够开发出功能强大的Web应用客户端,它具有跨浏览器兼容、可交互和可移植等特点。它的缺点是用户能
够直接查看JavaScript代码。本文介绍如何运用ASP技术保护DHTML代码,防止有人窃取你的DHTML代码。
传统保护技术
众所周知,Web本质上是一种不安全的媒介。当用户访问Web应用或者打开Web页面时,所有客户端的代码(HTML,
JavaScript源文件以及CSS样式)一般都要下载到客户端缓冲区。用户只需点击一下“查看源文件”就可以查看、分析和复
制这些代码。
MSDN摘录了Wrox《Instant JavaScript》一书的部分内容,它指出了保护JavaScript代码的几种方法,具体请参见这
里。
客户端JavaScript代码保护方法主要可以分成如下几类:
a)Microsoft的方法:Microsoft通过发布Windows Script Engine Version 5.0来解决客户端源代码保护问题。源代码通
过一个ActiveX层编码(不是加密)。请参见Script Encoding with the Microsoft Script Engine Version 5.0。
这种方法的缺点是经过编码的代码只有IE 5.0+才能解码,而且他们坦率承认编码过程并非简单易行。如果你使用的是其他
浏览器(包括IE浏览器的早期版本),你就不能通过浏览器访问脚本代码。
b)模糊代码(Code Obfuscation):一些共享软件,比如Jammer以及JMyth,企图通过让代码变得难于阅读、让变量名字
变得杂乱去防止有人偷窃JavaScript代码。这种方法的缺点在于,任何有决心的程序员都能够用全局搜索和替换工具轻松
地打破这种保护,因为这只需把那些含义模糊的变量名字改成含义明确的变量名字即可。关于JAMMER的更多说明,请参见
这里。
c)加密:有许多方案、工具能够有效地加密JavaScript代码。加密客户端JavaScript代码最主要的问题在于用来解密的脚
本代码往往很容易取得,导致对代码实施反向工程非常容易。显然,这种方法不能阻止任何认真的程序员获取源代码。虽
然我们可以用Java作为加密和解密过程的中间工具,但遗憾的是,Applet会给Web页面增加不必要的额外负荷,而且它会因
为浏览器所用Java虚拟机版本的不同而无法正常运行。相对而言,DHTML却意味着快速、小巧、通用和可移植。
一种新方法
在试验WML(Wireless Markup Language)时,我想到了一种保护客户端源代码的新方法。在基于ASP的WML页面中,服务器