ASP全称Active Server Page,它是微软公司出品的WEB动态交互页面开发语言,因为它的基本语法就是VbScript,所以很容易入门。并且,由于所有ASP文件都是在服务器端解释并执行,最终传送给客户端浏览器的是纯html文件,所以起到了一定程度的源代码保密作用。但是在服务器端,ASP文件是以实实在在的明文代码存在的,在存放ASP程序的服务器上登陆后,就能看到ASP程序的源代码;并且,如果做为商品软件或者共享软件发布出去,源代码就会轻易曝光。有没有方法能有效地保护ASP程序的源代码呢?有!以下给大家介绍两种方法,一种比较简单,另一种稍微复杂点。
第一种方法:Script Encoder加密
加密原理
按照一定的方法加密ASP文件为相应的密文,并通过在服务器上安装解释程序进行ASP程序的解释执行,从而达到加密作用。
实现步骤
1、下载解释程序
解释程序名称叫做“Windows Script Engine 5.0”,下载地址是:http://www.microsoft.com/msdownload/vbscript/scripting.asp?msid=32186&plat=x86&lang=
Chinese/Simplified,下载的程序名为ste50chs.exe。 或者点这里直接下载
2、在服务器上安装解释程序
以超级用户登陆服务器,双击下载的ste50chs.exe开始安装,安装结束后,重新启动服务器。
3、下载ASP程序加密软件
加密ASP程序的文件叫做“Script Encoder”,下载地址是:http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe
或者点这里直接下载
4、安装ASP程序加密软件Script Encoder
双击下载的sce10en.exe进行安装,安装完毕后,默认情况下,在c:\program files\Windows Script Encoder\目录下,有一个screnc.exe文件,这就是加密ASP程序的执行文件。
5、加密ASP程序
screnc的使用方法非常简单,直接在DOS命令行状态下执行就可以。举例如下:
screnc /s /f aaa.asp 将aaa.asp进行加密,输出文件名也为aaa.asp,即覆盖原文件
screnc /s /f *.asp 加密当前目录下的所有asp文件
screnc /s /f aaa.asp bbb.asp 将aaa.asp进行加密,输出文件名也为bbb.asp,即保留原文件aaa.asp
经过上面的步骤,ASP文件中,包含在之间的asp代码,就成为了密文,而其他非ASP代码部分,如HTML的table等标记仍然保持原样不变。 经过加密处理后的ASP文件中被加密过的部分为只读内容,如果对这些部分进行修改,将导致整个ASP文件不能被使用。
可以看出,上面的方法虽然很简单实用,但也存在一定的不足。比如:由于是解释程序处理加密的ASP文件,必然导致运行速度减慢;一旦出现反解码工具,加密的文件代码也会暴露。为克服这些不足,就需要更加完善的方法:将ASP代码编写成服务器端组件。请看第二种方法。
第二种方法:用VB6编写服务器端组件
加密原理
应用ASP进行WEB开发的一大优点是:可以编写特殊的服务器端组件,并在服务器端注册,这样就可以在ASP文件中进行调用。根据这个原理,我们可以将需要保密的ASP处理代码,编写成DLL文件成为服务器端组件,以供ASP程序调用。
准备编程与调试环境
可以选择以下2种软件环境开发ASP服务器端组件
1、中文Windows98(包含Internet Explorer 4.x)+ Windows98自带的PWS + 中文VB6.0
2、中文WindowsNt 4.0 + Internet Explorer 4.x + IIS 4.0 Web Server(支持ASP)+ 中文VB6.0
下面的步骤以环境1为参考。
实现步骤
假设我们需要将下面的ASP文件中的代码部分编写成组件:
ASP服务器组件编写示例 ----- Top
ASP服务器组件编写示例 ----- End
1、启动VB6,新建工程,选择"activex dll"
2、选择菜单"工程/引用",选择"Microsoft Actiive Server Pages Object Library"
3、修改工程名并进行基本配置
- 在“工程”浮动窗口中选择当前工程,在“属性”浮动窗口中输入工程名称“gwasplt”。
- 选择菜单“工程/gwasplt属性”,选中“执行无用户界面”
4、输入通用ASP接口代码
在VB6编辑窗口中,输入以下通用ASP接口代码:
Private MyScriptingContext As ScriptingContext
Private MyApplication As Application
Private MyRequest As Request
Private MyResponse As Response
Private MyServer As Server
Private MySession As Session
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
Set MyScriptingContext = PassedScriptingContext
Set MyApplication = MyScriptingContext.Application
Set MyRequest = MyScriptingContext.Request
Set MyResponse = MyScriptingContext.Response
Set MyServer = MyScriptingContext.Server
Set MySession = MyScriptingContext.Session
End Sub
Public Sub OnEndPage()
Set MyScriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub
5、输入ASP应用程序代码
对应下面的ASP代码
在VB6中建立如下的过程
Public Sub test()
aaa = MyRequest("remote_addr")
MyResponse.Write ("你好,朋友!你现在的IP地址是:" & aaa)
End Sub
可以看出,原来在ASP文件中书写的response.write,在VB6中就要写成myresponse.write,完整的关键字对应关系是:
ASP文件中的关键字 VB6中对应关键字
ScriptingContext MyScriptingContext
Application MyApplication
Request MyRequest
Response MyResponse
Server MyServer
Session MySession
6、建立调用ASP服务器端组件的ASP文件
test.asp
ASP服务器组件编写示例 ----- Top
ASP服务器组件编写示例 ----- End
7、调试
我们可以很方便的在VB中进行ASP服务器端组件的调试,而不需要重新启动机器。假设test.asp位于WEB服务器根目录下,按照下面的步骤进行调试:
<1> 在VB6中,选择菜单“运行/启动”
<2> 启动浏览器,在浏览器中输入:http://localhost/test.asp
<3> 查看显示结果
<4> 如果需要修改组件,回到VB6中,选择“运行/结束”
<5> 在VB6中修改相应的过程“Public Sub test()”
<6> 再转到步骤<1>进行调试
当调试完毕,选择菜单“文件/生成gwasplt.dll”,创建独立的ASP服务器端组件程序gwasplt.dll。当成功生成DLL文件后,关闭VB6编程环境,就可以正确执行http://localhost/test.asp了。
8、在其他的系统中进行注册
如果将上面编写的gwasplt.dll安装在其他机器中,需要先将组件注册到那个机器的系统里面。
首先,将gwasplt.dll拷贝到那个机器的某个目录下,一般是系统目录,比如c:\winnt\system32。
然后,调用Regsvr32注册该DLL。选择“开始/运行”,输入:
Regsvr32.exe c:\winnt\system32\gwasplt.dll。
这样,就可以象test.asp一样调用这个DLL组件了。
显然,采用第二种方法,速度将提高、保密性将大大增强,而且,在VB中灵活运用各种函数、API、组件等等,能开发出单纯ASP代码所不具备的强大功能!
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5425246