2024年6月20日发(作者:)
第11卷第2期
2008年6月
沙洲职业工学院学报
Journal of Shazhou Professional Institute of Technology
Vo1.11,NO.2
June。2008
ActiveX DLL技术在ASP源代码保护中的应用
’
许礼捷
(沙洲职业工学院,江苏张家港215600)
摘要:通过对ActiveX DLL和ASP在程序开发过程中源代码保护功能的比较分析,提出了采用VB编写的ActiveX DLL
替代简单的纯VBScript脚本语言来实现核心代码和商业逻辑的封装,从而实现ASP源代码保护的方法。
关键词:ActiveX DLL;Visual Basic(VB);VBScript脚本语言;ASP
中图分类号:TP311.1 文献标识码:A 文章编号:1009--8429(2008)02--0001一O4
The Application of ActiveX DLL in Protecting the Source Code for ASP
XULi ̄ie
r Shazhou Professional Institute of Technology,Zhangjiagang 215600,China
Abstract:Through the comparison and analysis of protecting the code by ActiveX DLL or ASE htis paper puts
forward the method of protecting the code by means of the ActiveX DLL to package the important code and
business logic instead of hte VBScript language.
Key words:ActiveX DLL;Visual Basic(VB);VBScript language;ASP
0引言
ASP是目前较为流行的构建动态WEB站点的编程技术,因为它可以创建功能强大、易于维护、与平
台无关的应用系统,所以受到广泛的应用。但ASP本身使用的VBScript脚本只是一种非编译型的、在服
务端运行的脚本语言,它采用明文的方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不
能保证发布到运行环境中去的ASP应用程序不被非法拷贝,因此如何有效保护开发出来的ASP程序代码,
就成了Web程序开发人员面临的一个重要问题。本文利用VB编写的ActiveX DLL实现对ASP程序的封
装,很好地解决了代码保护的问题。
1 ActiveX DLL封装ASP源代码的优越性分析
1.1 ActiveX技术
ActiveX是微软提出的广泛应用于Windows系列的一种代码封装技术,提高了程序代码的可重用性,
加快了程序项目的开发速度,一般被称为“组件”。在VB 6.0的集成开发环境当中,有几种ActiveX项目:
ActiveX EXE,ActiveX OCXs,ActiveX文档DLL和ActiveX文档EXE,ActiveX DLLs。IJ 本文要讨论
的ActiveX DLL正是ActiveX DLLs组件,大部分微软发布的附加组件和其他一些第三方厂家提供的组件
都是这种类型的ActiveX DLL,可以使用VB,VC,JAVA等语言来开发。
1.2使用ActiveX DLL技术的优越性
ActiveX DLL是编译好的DLL(动态链接库)文件,如果没有工程源文件,则无法得知程序的源代
码,就可以很好保护开发人员编写的程序,保证开发者的商业机密和核心技术。在Visual Basic中建立一
个.dll文件实际上是一个ActiveX对象。这种对象可以采用微软的组件对象模型(COM)技术来实现,也可
以使用它们来建立与.du相关的类。
开发人员利用ActiveX DLL技术进行开发有很多原因,主要是注重如下优越性:
收稿日期:2008。03.28
作者简介:许礼捷(1972.),男,沙洲职业工学院电子信息工程系讲师,硕士。
许礼捷:ActiveX DLL技术在ASP源代码保护中的应用
(1)更好的性能。与一个普通的ASP页相比,一个ActiveX DLL运行速度更快。举一个简单的范
例:一个ASP页计算一个从0到10 000 000的变量,然后显示一个“Done”字符串需要26.087毫秒。然
而VB的.dll文件只需要100毫秒就可以完成这一过程。因此VB.d11比ASP页快了260倍。在这样的测
试中,速度的差别是显而易见的,因为ASP运行26秒,.dll文件只需要运行少于1秒。关键的一点是,
速度的差别主要是与代码所要处理的工作量有关,即代码执行的工作量越大,速度的差别就会越明显。
若将以上测试的文件扩大一倍,速度差别就会更明显。ASP页需要25.156毫秒,然而.dll文件只需要70
毫秒——后者以359倍的速度运行。
.
du文件相比于ASP页运行更快的原因有两个:第一是.dll文件被编译。这就意味着文件在机器语言
中运行,达到它能够达到的速度。ASP页运行的是被一个脚本引擎处理的代码,这样,每一部分必须被
编译然后才被处理。第二是.dll文件使用的是一个被声明为长整型数据类型的变量,这就不需要32位处
理器的解释。而脚本页使用的是一个Variant变量,这一变量类型必须被转换成一个数字,然后才能够在
计算中使用,这样就不可避免地增加了处理时间。L2
(2)变量声明方法更好。变量声明的方法可以使运行更加迅速,除此之外,还可以更容易地进行程
序开发,因为变量类型不需要转换。变量可以在最初状态下就被声明,从而避免编写额外的转换代码行。
(3)源代码被隐藏。一个.dl1文件可以使程序的源代码隐藏而防止被一些黑客攻击。一个ASP页将
脚本程序以纯文本存储到网络服务器。一旦有人获得网络站点文件的访问权,网页就很容易地被访问,
所以程序的源代码就被公开和受到损害。使用一个普通的ActiveX.dll文件来处理站点的商业逻辑,可以
防止不怀好意的人访问程序的源代码。
(4)开发环境更加丰富。通常开发人员使用微软的脚本编辑器来开发ASP脚本,虽然这也是功能比
较完整的工具,但它只提供了基本的脚本特性。相反,Visual Basic是一个更丰富的开发环境。总之,这
两种工具没有可比性——其中一个是脚本工具,另一个是功能完全的开发软件包。
(5)更高效率的交叉开发。以VB建立的.dll很容易地适用于其他的开发环境,比如微软的Access。
另一方面,当与其他环境进行交叉开发的时候,开发人员必须重新建立一个ASP页的任务。
(6)更高效率的ASP页。一个包含所有的商业逻辑可以变得很冗长。使用.dll文件是一种很高效的
解决方法,因为它包含所有的逻辑。这种管理结果是实现更加简单而又高效的代码。
使用VB等开发工具编写ActiveX DLL来完成ASP所需完成的部分功能,不仅可以对这部分ASP源
代码进行保护,还可以提高执行速度,这一点在大运算量时更为明显。此外,采用ActiveX DLL来开发
WEB程序,还能享用VB等开发工具大量的优点,充分利用VB等开发工具的特性来开发各种程序。
2 VB6编写ActiveX DLL进行代码封装
在安装了PWS4或者IIS4以上的WEB服务器中,都有了一个名为“Microso ̄Active Server Pages
Object”的对象库,开发人员可以在VB的ActiveX DLL应用中引用这个对象库,通过引用这个对象库就
获得了一个对象(类):ScriptingContext,该对象(类)纳入了有关ASP的所有属性与方法,对象库内的
关系如表1所示。通过用VB引用表中的五个类成员制作一个动态链接库(DLL),就可以在ActiveX DLL
中完成ASP所需完成的功能,并且达到隐藏ASP源代码的功能。【
表1 ScriptingContext类的对象库关系
2.1编写ActiveX DLL的程序实现
在编写ASP程序时,开发人员最担心的就是数据库的相关连接信息在代码中显露,从而遭到破坏。
2
许礼捷:ActiveX DLL技术在ASP源代码保护中的应用
以下就以实现用户登录验证为例,对使用VB6.0编写ActiveX DLL的过程进行说明。
(1)使用VB6.0创建一个新的ActiveXDLL项目。
(2)引用”Microsoft Active Server Pages Object”和”Microsoft ActiveX Data Objects 2.1 Library”对象库。
(3)将工程的名称改为MyLogin,保存工程文件为MyLogin.vbp;将类模块的名称改为MLogin,保
存类文件为MLogin.cls,这样工程MyLogin就拥有了一个类MLogin。
(4)进行类MLogin的每个模块的设计:包括ASP网页调用与终止该模块组件时的初始触发事件
Class
_
Initialize0与终止触发事件Class—Terminater0;与ASP引擎之间的交互时使用ASP内建对象的子程
序OnStartPage0,OnEndPage()以及其他的子程序和函数如LoginForm0等。而这些事件和程序在该组件
被调用的执行顺序如下图1所示:
Class
_
Initialize 0 OnStartPage() 其他开放的子程
序、函数等如
LoginForm0
图1类模块中组件和程序的调用执行顺序
其中:在事件OnStartPage中创建类ScriptingContext的一个引用,在事件OnEndPage中释放类
ScriptingContext的所有引用,在子程序LoginForm中实例化类ScriptingContext。部分代码如下:
(1)在MLogin模块的区段声明5个对象变量
Private ScriptingCOntext As ScriptingContext
’
…一
以下声明4个使用到的ASP对象变量…一
Private Request As Request
Private Response As Response
Private Server As Server
Private Session As Session
(2)在OnStartPage0子程序中建立对象变量
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
’初始化相关对象变量,只用到ASP的4个内建对象
Set ScriptingCOntext=PassedScriptingContext
Set Request=ScriptingCOntext.Request
Set Response=ScriptingCOntext.Response
Set Server=ScriptingC0ntext.Server
Set Session=ScriptingContext.Session
’
…一
记录调用的ASP VBscript…一
strScript=Request.ServerVariables(”SCRIPT_NAME”1
’
…一
以Access为例,准备连接字符串;SQL Server的连接另做更改…一
strDSN=”Driver={MicrosoftAccess Driver( .mdb)};DBQ=”&Server.MapPath(”test.mdb”)
End Sub
(3)在LoginForm0子程序中显示登录画面,并完成登录验证
Private Sub LoginForm()
Dim strUserAs String,strPwdAs Stirng
Dim Html As String,strCheck As String
’
…一
如果输入的账号不为空…..
If Request.QueryString(”User”1<>…’Then
3
许礼捷:ActiveX DLL技术在ASP源代码保护中的应用
’将表单字段存入相关的变量
strUser=Request.QueryString(”User”1
strPwd=Request.QueryString(”Passwd”、
’如果先前曾存入cookies
Elself Request.Cookies(”MyLogin”)(”chkPwd”)=”true”Then
’从cookies取出,再存入相关的变量
strUser=Request.Cookies(”MyLogin”)(”User”)
strPwd=Request.Cookies(”MyLogin”)(”Passwd”)
Else
’若第一次调用本组件,将变量全部清空
strUser=…’
strPwd=’’”
strCheck=””
EndIf
I_-.此处略去登录界面的其他HTML代码…
End Sub
程序编译后,即生成可以访问ASP内置对象的ActiveX DLL。
2.2 ActiveX DLL的注册和调用
在VB6.0中将该ActiveX DLL项目编译成为一个DLL文件
MyLogin.dll,并在系统中注册该DLL文件(运行regsvr32路径
kMyLogin.dl1)。然后,只需要编写简单的ASP程序来调用这个组
件。组件执行流程以及调用组件的部分ASP代码如下:
(1)MyLogin组件的执行流程:见图2。
(2)登录验证文件Login.asp的部分代码:【 】
<% 图2 MyLogin组件的执行流程
Set Obj 1=Server.CreateObject(”MyLogin.MLogin”)
Obj1.Login(、
Set Objl=Nothing
%>
这些代码是在服务器端运行的,客户机不需要安装任何软件,只需要浏览器即可。
3结论
以上提出一个使用VB编写ActiveX DLL实现ASP源代码保护的方法。并通过具体例子证明,使用
ActiveX DLL不仅可以实现和ASP同样的功能,更重要的是它能对程序的核心代码和商业逻辑进行封装保
护,使得WEB应用程序在开发过程中变得更加安全、高效和快速。本文列举的只是用ActiveX DLL实现
的一个简单例子,若再加以扩充,即可编写出一套安全可靠、运行速度更快、功能强大的WEB应用程序。
参考文献:
[1](美)班纳(Balena,F).Visual Basic 6编程技术大全【M】.北京:机械工业出版社,2000.567—571,795—803.
【2]使用ASP中的VB ActiveX.dll文件[EB/OL].(2006—9—16)[2008—3—23】.http://www.runcode.cn/article/2006/0916/article_1016.htm1.
【3]廖信彦.Active Server Pages 3.0彻底研究【M].北京:中国铁道出版社,2001.542—564.
[4】资讯教育小组.ASP和SQL网站数据库程序设计【M】.北京:科学出版社,2002.350 372.
4
发布者:admin,转转请注明出处:http://www.yc00.com/web/1718859254a2753123.html
评论列表(0条)