ASP网站制作之巧用ASP手艺回护DHTML源代码
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.dhtml|源代码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,看看哀求的劈头是不是正当。如是,则封闭扫瞄器缓存,从头设置会话变量,然后向扫瞄器发送JavaScript代码。假如对js.asp的哀求不是来自牢靠的劈头,会话变量auth是false,程序只发送一个带有版权声明的空缺页面。
其了局是,假如用户妄图下载JavaScript源文件大概在另外一个网站上利用JavaScript源文件,他失掉的只是一个空缺页面。如许,我们也就完成了对谁能够会见DHTML源文件的把持。
假如要在Web页面中回护页面实践内容的HTML代码,你能够在js.asp文件中创立</p>asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
页:
[1]