ASP网页设计巧用ASP手艺回护DHTML源代码(转)
ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用dhtml|源代码巧用ASP手艺回护DHTML源代码2001-8-18动网前锋
DHTML使得我们可以开辟出功效壮大的Web使用客户端,它具有跨扫瞄器兼容、可交互和可移植等特性。它的弱点是用户能
够间接检察JavaScript代码。本文先容怎样使用ASP手艺回护DHTML代码,避免有人夺取你的DHTML代码。
传统回护手艺
尽人皆知,Web实质上是一种不平安的前言。当用户会见Web使用大概翻开Web页面时,一切客户真个代码(HTML,
JavaScript源文件和CSS款式)一样平常都要下载到客户端缓冲区。用户只需点击一下“检察源文件”就能够检察、剖析和复
制这些代码。
MSDN摘录了Wrox《InstantJavaScript》一书的部份内容,它指出了回护JavaScript代码的几种办法,详细请拜见这
里。
客户端JavaScript代码回护办法次要能够分红以下几类:
a)Microsoft的办法:Microsoft经由过程公布WindowsScriptEngineVersion5.0来办理客户端源代码回护成绩。源代码通
过一个ActiveX层编码(不是加密)。请拜见ScriptEncodingwiththeMicrosoftScriptEngineVersion5.0。
这类办法的弱点是经由编码的代码只要IE5.0+才干解码,并且他们坦白供认编码历程并不是复杂易行。假如你利用的是其他
扫瞄器(包含IE扫瞄器的初期版本),你就不克不及经由过程扫瞄器会见剧本代码。
b)含混代码(CodeObfuscation):一些共享软件,好比Jammer和JMyth,妄图经由过程让代码变得难于浏览、让变量名字
变得混乱往避免有人偷盗JavaScript代码。这类办法的弱点在于,任何有决计的程序员都可以用全局搜刮和交换工具轻松
地冲破这类回护,由于这只需把那些寄义含混的变量名字改成寄义明白的变量名字便可。关于JAMMER的更多申明,请拜见
这里。
c)加密:有很多计划、工具可以无效地加密JavaScript代码。加密客户端JavaScript代码最次要的成绩在于用来解密的脚
本代码常常很简单获得,招致对代码实行反向工程十分简单。明显,这类办法不克不及制止任何仔细的程序员猎取源代码。虽
然我们能够用Java作为加密息争密历程的两头工具,但遗憾的是,Applet会给Web页面增添不用要的分外负荷,并且它会因
为扫瞄器所用Java假造机版本的分歧而没法一般运转。绝对而言,DHTML却意味着疾速、玲珑、通用和可移植。
一种新办法
在实验WML(WirelessMarkupLanguage)时,我想到了一种回护客户端源代码的新办法。在基于ASP的WML页面中,服务器
端代码会有以下内容:
<%Response.ContentType="text/vnd.wap.wml"%>
<?xmlversion="1.0"encoding="iso-8859-1"?>
<!DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
......
能够看到,我们起首发送了一个WML头,使得无线扫瞄器以为该ASP页面实践上是一个WML页面。这类手艺一样能够用来回护
JavaScript源文件(.js文件)。
Netscape跟着JavaScript1.2的公布引进了对JavaScript源文件的撑持。年夜多半撑持该版本JavaScript的扫瞄器都撑持
JavaScript源文件(InternetExplorer3.0+,Netscape3.0+和Opera5.0)。静态HTML(DHTML)由JavaScript和CSS
夹杂组成。CSS款式使得开辟者可以自在地在扫瞄器窗口中体现各类页面元素,而JavaScript则供应了把持扫瞄器自己的必
要功效。JavaScript是DHTML的关头构成部分。
上面我们经由过程例子来讲明这类新的DHTML源代码回护办法。这个例子触及三个文件:index.asp,js.asp和global.asa。
global.asa界说了一个auth会话变量,该变量用于考证哀求JavaScript源文件的页面劈头是不是正当。这里选择利用会话变
量的缘故原由在于它用起来对照便利。
global.asa
SubSession_OnStart
Session("auth")=False
EndSub
我已经试过用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>
<scriptlanguage="Javascript"type="text/javascript"SRC="js.asp"></script>
</head>
<body>
<scriptlanguage="Javascript">test();</script>
<br>
<ahref="index.asp">reload</a>
</body>
</html>
上面我们来剖析一下index.asp。起首,程序把auth会话变量设置成了“true”,它暗示哀求.js文件的页面应当被信托。
接上去的几个Response挪用避免扫瞄器缓存index.asp页面。
一样平常地,在HTML文件中挪用JavaScript源文件的语法以下:
<scriptlanguage="Javascript"src="yourscript.js"></script>
但在本例中,我们挪用的倒是一个ASP页面而不是JavaScript源文件:
<scriptlanguage="Javascript"type="text/javascript"SRC="js.asp"></script>
假如要掩蔽使用正在哀求ASP页面这一现实,你能够把js.asp更名为index.asp(大概default.asp),然后把这个文件放到
独自的目次当中,好比“/js/”,此时下面这行代码就改成:
<scriptlanguage="Javascript"type="text/javascript"SRC="/js/"></script>
这几近可以利诱任何妄图猎取JavaScript源文件的人了。不外,请不要健忘在IIS服务器设置中准确地设置默许页面文件的
名字。
js.asp
<%
IFSession("auth")=TrueTHEN
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
%>
functiontest(){
document.write(这是javascript函数的输入.);
}
<%ELSE%>
<!--这些代码受版权回护。一切权力保存-->
<%ENDIF%>
上面我们来剖析一下js.asp怎样举行考证和发送JavaScript代码。程序起首反省会话变量auth,看看哀求的劈头是不是合
法。如是,则封闭扫瞄器缓存,从头设置会话变量,然后向扫瞄</p>asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。 不能只是将它停留在纸上谈兵的程度上。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
页:
[1]