日期:2014-05-20  浏览次数:20663 次

讨论[C# WinForm 2.0]关于应用程序敏感数据的存放问题?
假如我有个项目,和DB相关,我在应用程序选项里提供了设置数据库连接字串的设定,当用户设定好连接串时,我该把DB连接密码放到哪里好了?放在Properties.Resources里吧,又听说反汇编后什么都看到了!
如果放在Properties.Settings里吧,不用说了,那是个明文,就在App.exe.config里了!大伙来发发意见吧,我看怎么解决这个问题?
最好能把实现方法也给写上!呵呵!

------解决方案--------------------
写一个静态类,将敏感数据作为其属性,然后将连接字符串写入注册表
------解决方案--------------------
用DES加密后保存,用时动态解密。
------解决方案--------------------
非托管dll里放加密算法,外部文件放加密后的连接串。
c#调用非托管dll获得连接串。
然后给每个adapter的connectionstring赋值。
这样可以不从.exe.config里读连接串。

btw:怎么做都只是稍微让解密者麻烦一点,总是能解的开。。

------解决方案--------------------
hash后key放在什么地方?得到base64 str跟明文也没啥区别。。。
------解决方案--------------------
用c++编写一个dll,把字符串加密后放到里面,使用的时候直接调用这个就ok了

因为.NET的程序可以反编译,就算你加密了又如何?代码都可以看到,人家反过来写不久可以看到了?
------解决方案--------------------
放到非托管dll里最主要的原因是,非托管程序有很多好壳可以加,armadillo
双线程壳个人认为还是比较难脱的。。