现有情况如下:
公司的ERP软件为cs结构,所有的电脑通过公司局域网或互联网链接到公司的SQLserver服务器
数据库连接字符串直接编译进了EXE中,使用的用户是SA
程序链接到数据库之后,会根据用户提供的用户名和密码禁用或起用EXE中的功能
那么我能想到的安全隐患如下:
1数据库连接字符串直接编译进了EXE中,其中就包含数据库的密码,也就是说如果有人反编译或跟踪我的程序,可以得到数据库的密码,毫无疑问会导致信息泄露
2软件的权限是由exe程序来分配的,而exe本身是一直拥有数据库的最高权限的,那么如果有人恶意拦截并修改程序的SQL查询命令,则也会导致信息泄露
这种情况好像又没有很好的解决方法.请问大家有什么意见
------解决思路----------------------
做三层结构,客户端不要涉及到任何的数据库连接内容,只是发送数据请求,中间层(可以放到单独服务器,也可以放到数据库服务器)进行数据库连接和提供客户端数据等操作
------解决思路----------------------
代码还是原来的代码,把你的程序分成两部分,和数据库有关的放中间层,UI有关的保留
中间层可以webservice,wcf或者webapi这样吧,或者高端点自己写服务器端,自己写协议,就像那些网络游戏一样。
------解决思路----------------------
三层是最佳解决办法。
如果必须是两层,可以将连接字符串加密后保存到一个外部文件中,程序运行时,先读,再解密,再连接。当然,这样还是有一定风险。我之前写的程序就是这样处理的。