rainstormmaster
您好:首先感谢您的光顾..
还有其他的一些大侠,老鸟,菜鸟们也感谢您们的光顾vb连接数据库的时候,一般都是con.open "sql数据库连接字符串(包含数据库主机名或IP,登陆用户名和密码,数据库名)"
然后对数据库进行操作...现在我想了解如果对上面的字符串处理,不让被人获取.我做的是对连接字符串全部加密,到上面的地方然后经行解密....但在连接到远程sql服务器1433端口,必须提交明文...
也就是说这字符串怎么加密,最后到用的是,需要解密.用ollydbg能够动态调试到解密之后的字符串.这就存在风险再担心的是上面的数据库用户名和密码被别人获取到了,他自己写一个程序,连接重要数据库....这问题所产生的后果就严重....编译的时候如果使用本机代码编译的方式生成的exe文件,用过反汇编工具,如ollydbg可以看见里面的字符串.
比如select * from A where id =之类的东西,这地方没有使用数据库的存储器...所以必需要知道数据库内部结构(字段)...如果使用p-代码编译,字符串是查不到,能不能动态调试就没进行测试
假如使用p-代码编译,生成的exe文件,和本机代码编译的exe文件有什么区别,,安全性什么的?
现在只是发现p-代码生成的exe文件小很多
问题总结:就是不想让其他程序连接上我的sql服务器,,只有我写的程序才可以连接数据库...为了数据库的安全....
上面写的有点繁琐...不好意思...感谢大侠们回复.

解决方案 »

  1.   

    你用 SQL Server 的企业管理器展开数据库目录,可以看到下面分“用户”、“角色”。
    你可以创建一个最小权限用户,他对任何任何表都没有访问权。然后再创建一个业务角色,将相应表的访问权赋给他。con.open 用最小权限用户连接数据库,即使被窃取也只是一个没有任何访问权的用户。
    然后用 con.execute "sp_setapprole ..." 来选定角色获得对数据库表的访问权,而该 sp 的参数可以指定用加密方式传送密码。Google: SQLServer2000安全模型
      

  2.   

    感谢两位大侠回复
    Tiger_Zhao的方法好,试试安全模型
    supergreenbean大哥.我用VB写的是2层结构.如果使用3层的话,
    客户端提交需要查询的参数,服务器根据提交的请求去查询数据库,如果查询到一个表记录集,怎么返回给客户端
    关于p-代码编译的原来更危险啊.....恐怖