巧用ASP技术保护DHTML源代码(转)

dhtml|源代码

巧用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页面中,服务器
端代码会有如下内容:

< % Response.ContentType = "text/vnd.wap.wml" % >
< ?xml version="1.0" encoding="iso-8859-1"? >
< !DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml" >
< wml >
......

可以看到,我们首先发送了一个WML头,使得无线浏览器认为该ASP页面实际上是一个WML页面。这种技术同样可以用来保护
JavaScript源文件(.js文件)。
Netscape随着JavaScript 1.2的发布引入了对JavaScript源文件的支持。大多数支持该版本JavaScript的浏览器都支持
JavaScript源文件(Internet Explorer 3.0+,Netscape 3.0+以及Opera 5.0)。动态HTML(DHTML)由JavaScript和CSS
混合构成。CSS样式使得开发者能够自由地在浏览器窗口中表现各种页面元素,而JavaScript则提供了控制浏览器本身的必
要功能。JavaScript是DHTML的关键组成部分。
下面我们通过例子来说明这种新的DHTML源代码保护方法。这个例子涉及三个文件:index.asp,js.asp以及global.asa。
global.asa定义了一个auth会话变量,该变量用于验证请求JavaScript源文件的页面起源是否合法。这里选择使用会话变
量的原因在于它用起来比较方便。

global.asa

Sub Session_OnStart
Session("auth") = False
End Sub

我曾经试过用HTTP_REFERER系统变量来验证发出请求的页面起源是否合法,后来发现这个变量可以通过telnet伪造,而且
某些浏览器未能在运行时正确地显示出HTTP_REFERER变量。

index.asp

< % Session("auth") = True
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
% >
< html >
< head >
< title >测试页面< /title >
< script language="Javascript" type="text/javascript" SRC="js.asp" >< /script >
< /head >
< body >
< script language="Javascript" >test();< /script >
< br >
< a href="index.asp" >reload< /a >
< /body >
< /html >

下面我们来分析一下index.asp。首先,程序把auth会话变量设置成了“true”,它表示请求.js文件的页面应该被信任。
接下来的几个Response调用防止浏览器缓存index.asp页面。
一般地,在HTML文件中调用JavaScript源文件的语法如下:

< script language="Javascript" src="yourscript.js" >< /script >

但在本例中,我们调用的却是一个ASP页面而不是JavaScript源文件:

< script language="Javascript" type="text/javascript" SRC="js.asp" >< /script >

如果要遮掩应用正在请求ASP页面这一事实,你可以把js.asp改名为index.asp(或者default.asp),然后把这个文件放到
单独的目录之中,比如“/js/”,此时上面这行代码就改为:

< script language="Javascript" type="text/javascript" SRC="/js/" >< /script >

这几乎能够迷惑任何企图获取JavaScript源文件的人了。不过,请不要忘记在IIS服务器配置中正确地设置默认页面文件的
名字。

js.asp

< %
IF Session("auth") = True THEN
Response.ContentType = "application/x-javascript"
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
Session("auth") = False
% >
function test(){
document.write('这是javascript函数的输出.');
}
< %ELSE% >
< !--这些代码受版权保护。所有权利保留-- >
< %END IF% >

下面我们来分析一下js.asp如何进行验证以及发送JavaScript代码。程序首先检查会话变量auth,看看请求的起源是否合
法。如是,则关闭浏览器缓存,重新设置会话变量,然后向浏览

时间: 2024-07-30 12:48:38

巧用ASP技术保护DHTML源代码(转)的相关文章

巧用ASP技术保护DHTML源代码

dhtml|源代码 DHTML使得我们能够开发出功能强大的Web应用客户端,它具有跨浏览器兼容.可交互和可移植等特点.它的缺点是用户能够直接查看JavaScript代码.本文介绍如何运用ASP技术保护DHTML代码,防止有人窃取你的DHTML代码. 传统保护技术 众所周知,Web本质上是一种不安全的媒介.当用户访问Web应用或者打开Web页面时,所有客户端的代码(HTML,JavaScript源文件以及CSS样式)一般都要下载到客户端缓冲区.用户只需点击一下"查看源文件"就可以查看.分

运用加密技术保护Java源代码

Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码. 一.为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们唯一需要了解的就是Java的ClassLoader对

强烈推荐ASP初学者观看:常用ASP技术

初学 对于用ASP技术编程的初学者来说,无从下手是第一感觉,笔者曾经有这么一段经历.经过一番"磨难"以后,你就会找到灵感.现将本人编程中积累的一些经验,拟成本文,奉献给读者. 1 首先要学习一些例子程序. 接到任务后,不要盲目地急于编写代码,而是先看一下别人成功的例子,然后在其上修改或模仿调试,这样会加快你熟悉的速度.例如,关于ASP编程的教科书上经常有这么一个例子出现,即显示系统当前时间的语句:<%=now()%> ,别看这么简单的一条语句,里边却包含了ASP的编程思想和

asp作品保护方案

自从ASP(Active Server Pages)问世以来,因其可以创建健壮易于维护.与平台无关的应用系统,ASP技术受到了越来越多网络程序员的喜爱,使用ASP从事WEB开发的人也越来越多.但ASP只是一种非编译型的.在服务端运行的脚本语言,采用明文(plain text)方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不一定能保证发布到运行环境中去的ASP应用程序不被非法拷贝.对于高权限的管理员,可以轻而易举从服务器端拷贝出ASP程序应用到别的非授权网站.这样给ASP应用商业化带

如何在asp.net保护文件

asp.net 如何在asp.net保护文件 简介如果我们做网站是用Access数据库作为数据源,则我们最关心的是Access数据库文件的安全问题.如果我们将存有重要信息(如密码.付款信息.个人私有的数据等等)的.mdb文件,放在Web服务器上可访问的目录中,任何一个人若猜到数据库文件名就可以通过浏览器或其他下载工具进行下载,这是非常危险的. 有许多方法对.mdb数据库文件进行保护,甚至任何一个你想保护的文件.最直接有效的方法是把.mdb数据库文件放在web服务器non-web accessib

用 ASP 技术开发WEB调查(投票)系统 (1)

web|投票|投票 纲要       本文介绍一个用 ASP 技术实现的 WEB 调查系统(也称为投票系统)的实现,该系统支持基于浏览器的调查项目创建与维护.调查表单的动态生成以及投票结果分析.    目录      一.系统概貌   二.调查项目的创建和维护   三.调查表单的生成与结果分析(附源程序)         一.系统概貌   作 者 : 仙人掌工作室       本文所介绍的 WEB 调查系统(或称为投票系统)支持基于浏览器的调查项目创建.管理与结果分析.调查项目及其下属各个问题的

网络数据库站点的技术保护措施

问:在网络数据库站点检索信息时往往需要验证用户的合法性,请分析这样的站点有哪几种技术保护措施? 答: 身为一个网管,都知道数据库就是网站的核心机密,黑客的目的往往也是数据库,所以保护数据库是刻不容缓的. 前人总结的方法如下: 1.发挥你的想象力 修改数据库文件名 不用说,这是最最偷懒的方法,但是若攻击者通过第三方途径获得了数据库的路径),就玩完了.比如说攻击者本来只能拿到list权 ,结果意外看到了数据库路径,就可以冠冕堂皇地把数据库下载回去研究了.另外,数据文件通常大小都比较大,起再隐蔽的文件

吐血推荐:asp作品保护方案

自从ASP(Active Server Pages)问世以来,因其可以创建健壮易于维护.与平台无关的应用系统,ASP技术受到了越来越多网络程序员的喜爱,使用ASP从事WEB开发的人也越来越多.但ASP只是一种非编译型的.在服务端运行的脚本语言,采用明文(plain text)方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不一定能保证发布到运行环境中去的ASP应用程序不被非法拷贝.对于高权限的管理员,可以轻而易举从服务器端拷贝出ASP程序应用到别的非授权网站.这样给ASP应用商业化带

ASP技术ASPError对象属性

ASP技术ASPError对象属性 ASPCode 该ASPCode属性返回一个错误代码所产生的非法入境者. ASPDescription 该ASPDescription属性返回的详细描述错误. Category 类别属性返回错误的来源(原价的错误所产生的IIS ?一种脚本语言呢,还是一个组成部分? ) . Column 该栏属性返回栏的位置的ASP文件,产生了错误. desciption 描述属性返回的简短说明错误.  file 档案属性返回名称的ASP文件产生的错误.  line 线属性返回