日期:2010-03-08 浏览次数:20872 次
asp代码保密一直是令人头痛的问题,目前没有非常好的解决方案,无非用vb编译成dll,但工作量实在太大,于是一直苦苦寻求着另一种途径,本文详细介绍关于解决ASP中Connection对像封装dll问题的文章专题。
中午,突然灵感一发,“为什么不尝试用加密数据库?”,通过对数据库设一个高强度的密码,然后用vb封装connection对像,将密码信息写在dll里,然后通过asp创建组件方式调用,就算人家拿了我的代码,也无法改动数据库!
于是,开始了一步步既痛苦又刺激的旅程。vb三四年前用过,而且菜得不再菜,为了找思路,就上网搜,百度有时候也挺害人的,搜了一大堆误人子弟的东东出来,特别是那个vb程序里只放一个连接字符串,然后用asp创建组件,取出字串,然后连接的思路,没任何意思,一句respose.write 连接字串就出来。
达到加密数据库的目的,链接字串绝对是不能显示的,所以我参考了龙卷风写的"使用组件封装数据库操作(二)"中的方法,设定一个conn的全局变量,然后打开数据库的函数返回的只有true跟false。更重要的一点就是封装rs的execute方法,将其写到dll里,具体操作如下:
1.打开vb,创建一个activex dll工程,工程名称叫myconn,类模块是dbconn,然后写入以下代码:
Option Explicit
Dim rp As Response
Dim rq As Request
Dim ap As Application
Dim sr As Server
Dim sn As Session
Dim Conn As ADODB.Connection ''创建conn全局变量
Dim RS As ADODB.Recordset '' 创建全避变量rs
Public Sub OnStartPage(MyScriptingContext As ScriptingContext)
Set rp = MyScriptingContext.Response
Set rq = MyScriptingContext.Request
Set sr = MyScriptingContext.Server
Set ap = MyScriptingContext.Application
Set sn = MyScriptingContext.Session
End Sub
Public Sub OnEndPage()
Set rp = Nothing
Set rq = Nothing
Set sr = Nothing
Set ap = Nothing
Set sn = Nothing
End Sub