当前位置: 代码迷 >> VB Dotnet >> 怎么提高商用软件连接数据库的安全性
  详细解决方案

怎么提高商用软件连接数据库的安全性

热度:79   发布时间:2016-04-25 02:07:49.0
如何提高商用软件连接数据库的安全性
现有情况如下:
公司的ERP软件为cs结构,所有的电脑通过公司局域网或互联网链接到公司的SQLserver服务器
数据库连接字符串直接编译进了EXE中,使用的用户是SA
程序链接到数据库之后,会根据用户提供的用户名和密码禁用或起用EXE中的功能


那么我能想到的安全隐患如下:
1数据库连接字符串直接编译进了EXE中,其中就包含数据库的密码,也就是说如果有人反编译或跟踪我的程序,可以得到数据库的密码,毫无疑问会导致信息泄露

2软件的权限是由exe程序来分配的,而exe本身是一直拥有数据库的最高权限的,那么如果有人恶意拦截并修改程序的SQL查询命令,则也会导致信息泄露

这种情况好像又没有很好的解决方法.请问大家有什么意见
------解决思路----------------------
做三层结构,客户端不要涉及到任何的数据库连接内容,只是发送数据请求,中间层(可以放到单独服务器,也可以放到数据库服务器)进行数据库连接和提供客户端数据等操作
------解决思路----------------------
引用:
原来如此,那么一般来说中间层是怎么做的呢?或者说用什么做的呢?
因为这样一来,数据库的操作实际上是由具有最高权限的中间层完成,然后再由中间层按照客户端的权限提供相应的数据功能
但这样一来,客户端与中间层之间的沟通如何进行呢?需要手动写代码去替代原本的ADO.NET操作吗?


代码还是原来的代码,把你的程序分成两部分,和数据库有关的放中间层,UI有关的保留
中间层可以webservice,wcf或者webapi这样吧,或者高端点自己写服务器端,自己写协议,就像那些网络游戏一样。
------解决思路----------------------
三层是最佳解决办法。
如果必须是两层,可以将连接字符串加密后保存到一个外部文件中,程序运行时,先读,再解密,再连接。当然,这样还是有一定风险。我之前写的程序就是这样处理的。
  相关解决方案