关于VB访问远程SQL数据库安全问题

qingye2008 2009-05-27 11:35:32
rainstormmaster
您好:首先感谢您的光顾..
还有其他的一些大侠,老鸟,菜鸟们也感谢您们的光顾

vb连接数据库的时候,一般都是con.open "sql数据库连接字符串(包含数据库主机名或IP,登陆用户名和密码,数据库名)"
然后对数据库进行操作...

现在我想了解如果对上面的字符串处理,不让被人获取.

我做的是对连接字符串全部加密,到上面的地方然后经行解密....但在连接到远程sql服务器1433端口,必须提交明文...
也就是说这字符串怎么加密,最后到用的是,需要解密.用ollydbg能够动态调试到解密之后的字符串.这就存在风险

再担心的是上面的数据库用户名和密码被别人获取到了,他自己写一个程序,连接重要数据库....这问题所产生的后果就严重....

编译的时候如果使用本机代码编译的方式生成的exe文件,用过反汇编工具,如ollydbg可以看见里面的字符串.
比如select * from A where id =之类的东西,这地方没有使用数据库的存储器...所以必需要知道数据库内部结构(字段)...

如果使用p-代码编译,字符串是查不到,能不能动态调试就没进行测试
假如使用p-代码编译,生成的exe文件,和本机代码编译的exe文件有什么区别,,安全性什么的?
现在只是发现p-代码生成的exe文件小很多


问题总结:就是不想让其他程序连接上我的sql服务器,,只有我写的程序才可以连接数据库...为了数据库的安全....
上面写的有点繁琐...不好意思...感谢大侠们回复.

...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingye2008 2009-05-27
  • 打赏
  • 举报
回复
感谢两位大侠回复
Tiger_Zhao的方法好,试试安全模型
supergreenbean大哥.我用VB写的是2层结构.如果使用3层的话,
客户端提交需要查询的参数,服务器根据提交的请求去查询数据库,如果查询到一个表记录集,怎么返回给客户端
关于p-代码编译的原来更危险啊.....恐怖
supergreenbean 2009-05-27
  • 打赏
  • 举报
回复
那最好的办法就是关掉1433接口,然后你自己写个服务器端程序,专门负责监听并接收客户端发来的命令消息,这部分网络通讯消息你可以加密,而数据库操作之类的动作由服务器端程序专门负责

另外,只要是程序就没有啥不能破解的,而你认为很安全的那个P代码其实比本机代码更危险,字符串很容易看得到
Tiger_Zhao 2009-05-27
  • 打赏
  • 举报
回复
你用 SQL Server 的企业管理器展开数据库目录,可以看到下面分“用户”、“角色”。
你可以创建一个最小权限用户,他对任何任何表都没有访问权。然后再创建一个业务角色,将相应表的访问权赋给他。

con.open 用最小权限用户连接数据库,即使被窃取也只是一个没有任何访问权的用户。
然后用 con.execute "sp_setapprole ..." 来选定角色获得对数据库表的访问权,而该 sp 的参数可以指定用加密方式传送密码。

Google: SQLServer2000安全模型

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧