ASP中Connection对像封装dll解决方案

admin5年前IT技术1322

asp代码保密一直是令人头痛的问题,目前没有非常好的解决方案,无非用vb编译成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

Public Function openConn()
Dim str As String
Set Conn = sr.CreateObject("ADODB.Connection")

str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sr.MapPath("/mssdatabase/dbtest.mdb") &";data password=123456789"
Conn.Open str
If Err.Number <> 0 Then ''就是在社里返回喔

openConn = False

Else

openConn = True

End If
End Function

Public Function execute(sql) As ADODB.Recordset ''创建一个execute的方法,返回为recordset对像
Set RS = New ADODB.Recordset
RS.CursorLocation = adUseClient

Call openConn ''这句得要加,好像在外部的asp中不能触发全局conn变量,不知为此??

RS.Open sql, Conn, 3, 3
Set execute = RS
End Function

  编译该工程时,切记引用(工程>引用)"Microsoft active server pages object library"和"microsoft activexX data object 2.6 library"两个库类(感觉像c#的using差不多一样),然后编译成dll(文件>生成myconn.dll),一般vb编译成dll都会在系统中自动注册,如果是ntsf分区,给该dll加个everyone 可读,执行权限,然后到asp里调用,实现代码如下:

<%
dim conn
dim dbLink

dbLink="2"

if dbLink="1" then ''如果代码在别的机器上运行就使用dll组件链接数据库,否则就使用本地链接
Set conn=Server.CreateObject("myconn.dbconn")
conn.openConn
else
set conn=Server.CreateObject("ADODB.CONNECTION")
DBPath = Server.MapPath("/mssdatabase/dbtest.mdb")

conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& DBPath
end if
%>

  由于两种链接方式都只是使用了一个conn对像,所以不用对其他代码进行大修改,还是比较方便,目前dll中的execute方法对select操作已经测试通过,还有insert、update、delete等方法有待完善。

  附件为myconn工程文件全部代码

相关文章

1.解压缩

将下载到本地的安装介质解压缩。然后,将解压后的文件夹mysql-5.7.16-winx64拷贝到安装目录(E盘根目录)下。

2.设置系统环境变量

右键点击 计算机>>属性>> 高级系统属性>>环境变量>> 编辑 Path ,在最后添加” ;E:\mysql-5.7.16-winx64\bin“,确定。

3.创建my.ini 文件和data目录,配置安装路径与数据存储路径

在E:\mysql-5.7.16-winx64目录下创建data目录和my.ini,并在my.ini中配置安装路径与数据存储路径等信息。

点击(此处)折叠或打开

  1. [mysql]
  2. default-character-set=utf8
  3. [mysqld]
  4. max_connections=200
  5. default-storage-engine=INNODB
  6. basedir =E:\mysql-5.7.16-winx64\bin
  7. datadir =E:\mysql-5.7.16-winx64\data
  8. port = 3306

 

4.安装MySQL服务

首先,以管理员身份运行 cmd 并切换到MySQL的bin目录下;

接下来,执行mysqld --initialize-insecure

    这条命令用来初始化data文件,其中insecure选项指定登录无需口令。

点击(此处)折叠或打开

  1. D:\>e:
  2.  
  3. E:\>cd mysql-5.7.16-winx64
  4.  
  5. E:\mysql-5.7.16-winx64>cd bin
  6.  
  7. E:\mysql-5.7.16-winx64\bin>mysqld --initialize-insecure
  8.  
  9. E:\mysql-5.7.16-winx64\bin>

需要注意的是,如果不指定insecure选项,则会随机生成登陆密码, 在E:\mysql-5.7.16-winx64\data文件夹下,有一个 hoegh.err 文件,其中hoegh是主机名,打开会看到:
2016-10-20T09:34:56.806257Z 1 [Note] A temporary password is generated for root@localhost: p-mcI:ijR6Xg,
其中 p-mcI:ijR6Xg即为随机密码。

然后,输入 mysqld --install安装MySQL服务

我们会看到界面出现:Server successfully installed,这就说明MySQL服务安装成功。 

点击(此处)折叠或打开

  1. E:\mysql-5.7.16-winx64\bin>
  2.  
  3. E:\mysql-5.7.16-winx64\bin>mysqld --install
  4. Service successfully installed.
  5.  
  6. E:\mysql-5.7.16-winx64\bin>

5.启动MySQL服务

输入  net start mysql  回车, 就会看到: MySQL 服务已经启动成功。尝试使用root用户登录数据库,并通过show databases命令查看数据库概要信息。

点击(此处)折叠或打开

  1. E:\mysql-5.7.16-winx64\bin>
  2. E:\mysql-5.7.16-winx64\bin>net start mysql
  3. MySQL 服务正在启动 .
  4. MySQL 服务已经启动成功。
  5.  
  6.  
  7. E:\mysql-5.7.16-winx64\bin>mysql -u root
  8. Welcome to the MySQL monitor. Commands end with ; or \g.
  9. Your MySQL connection id is 2
  10. Server version: 5.7.16 MySQL Community Server (GPL)
  11.  
  12. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  13.  
  14. Oracle is a registered trademark of Oracle Corporation and/or its
  15. affiliates. Other names may be trademarks of their respective
  16. owners.
  17.  
  18. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  19.  
  20. mysql> show databases;
  21. +--------------------+
  22. | Database |
  23. +--------------------+
  24. | information_schema |
  25. | mysql |
  26. | performance_schema |
  27. | sys |
  28. +--------------------+
  29. 4 rows in set (0.00 sec)
  30.  
  31. mysql>

 

6.修改root密码

    安全起见,我们修改一下root密码。

点击(此处)折叠或打开

  1. mysql>
  2. mysql> alter user 'root'@'localhost' identified by 'root';
  3. Query OK, 0 rows affected (0.00 sec)
  4.  
  5. mysql>
  6. mysql> exit
  7. Bye
  8.  
  9. E:\mysql-5.7.16-winx64\bin>mysql -u root -proot
  10. mysql: [Warning] Using a password on the command line interface can be insecure.
  11. Welcome to the MySQL monitor. Commands end with ; or \g.
  12. Your MySQL connection id is 4
  13. Server version: 5.7.16 MySQL Community Server (GPL)
  14.  
  15. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  16.  
  17. Oracle is a registered trademark of Oracle Corporation and/or its
  18. affiliates. Other names may be trademarks of their respective
  19. owners.
  20.  
  21. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  22.  
  23. mysql> show databases;
  24. +--------------------+
  25. | Database |
  26. +--------------------+
  27. | information_schema |
  28. | mysql |
  29. | performance_schema |
  30. | sys |
  31. +--------------------+
  32. 4 rows in set (0.00 sec)
  33.  
  34. mysql>


MySQL数据库可以用任意ip连接访问的方法

 

过CMD命令行修改

MYSQL安装

  今天在Windows Server 2008 r2系统下部署了MySQL Community Server 5.7.16,安装过程中也遇到了一些问题,在这儿记录一下最终的安装过程。0.下...

信息

支付宝:帐号:zhoukouhu@126.com户名: 周扣虎支付宝收款主页:https://me.alipay.com/huicheng 招商银行帐号:6225 8821 1195 501...

sql语句 REPLACE 区分大小写字母的

 REPLACE  sql语句 REPLACE 区分大小写字母的;要注意...

让MobaXterm能自动显示服务器的cpu与内存使用情况

 Settings→SSH→勾选Remote-monitoring...

二维码生成导航

http://twoyn.shengmake.nethttp://twalabo.shengmake.nethttp://twyilang.shengmake.nethttp://twyindu.sh...

linux 挂载win7共享文件夹的方法

mount -t cifs -o user=administrator,password=000000 //192.168.1.2/gongxiang /mnt/share...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。