日期:2014-05-19  浏览次数:20938 次

app.config 与.dll的安全问题
问题:
winform中的config含连接远程主机的数据库连接字符串,为了避免密码泄露,就必须加密,但是加密就必须解密阿。一般情况我们所做的程序是3层,在数据访问层读app.config,然后在数据层里面解密,但这样我感觉有一个严重问题:就是客户建一个winform应用程序,然后把你的数据层dll文件添加引用到他的项目里,再把你的app.conifg拷进去,然后就可以在他的程序里面调用你写的方法了,比如任何添加删除修改,你的数据库会被搞得一团糟,怎么办?

我想肯定是我学的太浮浅了,在此请教各位大虾,帮我解决一下我的问题,先谢谢了!!!

(就算能限制dll不能别人引用就好了(这个也不好解决),但dll照样能被别人反编译,解密方法一览无遗;就算别人不反编译,直接引用,反正你的dll里面含有解密方法,别人更省事了。。。)

------解决方案--------------------
1、禁止的dll让别人引用使用。
http://www.cnblogs.com/BearsTaR/archive/2006/05/25/ProtectDll.html

2、就是使用混淆器,让别人看不懂你的代码!!

------解决方案--------------------
把解密的部分从你们的数据层dll分离出来。
把原来直接向数据层dll传加密连接字符串改为解密后的连接字符串。
------解决方案--------------------
数据库也有很强的身份验证机制+Windows Server的,考虑从这方面解决.

分发给客户端的DLL或其他组件并不能直接访问数据库,在中间层验证身份后给相应的访问权限(还是通过中间层访问)
------解决方案--------------------
这个顶起来
------解决方案--------------------
这个帖子不错
------解决方案--------------------
禁止dll被别人引用使用
------解决方案--------------------
一定需要把连接远程主机的数据库连接字符串放在config里面吗?如果放在View里面呢可不可以呢?
------解决方案--------------------
可不可以把数据层的.dll文件扔到服务器上去,客户端用反射来加载,config里直接加路径就好了。
不过性能不知道怎么样,没试验过。
------解决方案--------------------
这个问题还没有想过啊,受教了