日期:2014-05-17  浏览次数:21054 次

请问,winform连接远程数据库
最近做了winform应用程序,需要访问远程数据库,进行各种验证,方可使用软件
于是,在淘宝问了那些卖虚拟主机的卖家,都说只有固定IP才能访问数据库,意思即是只有一台电脑才能访问。问其缘由,说是sql账号容易被别人窃取。
我就不明白,我在程序中的连接字符串,别人怎么能窃取到呢?
有什么办法解决吗?难道我这个软件就作废了?

------解决方案--------------------
怎么不能,你先搞明白exe都有哪些存储信息,其中有常量存储区,这些都是可以读取出来的,特别是c#的,通过反编译,源码都拿得到,何况一个字符串了,所以不要再客户端写连接串,通过中间层去连接
------解决方案--------------------
能连也不要直接连,这样安全性是一方面,性能也比较差
服务端再做一层,如webservice,客户端通过webservice访问数据库
------解决方案--------------------
悲催的是 我连接的是MySQL.我们的所有服务器都是Linux的。。。
------解决方案--------------------
引用:
悲催的是 我连接的是MySQL.我们的所有服务器都是Linux的。。。

Linux就用MONO连做服务。
------解决方案--------------------
首先不是说只有知道IP才可以连接数据库。域名也可以了。
写在程序里的代码并不安全。C#可以完全反编译。用中间层可以的。
------解决方案--------------------
1,不安全,存在客户端的信息都可以通过各种方式和途径找出来
2,效率低下,你为什么不考虑用webserivce或者wcf呢?
------解决方案--------------------
引用:
对连接字符串进行加密,行不行啊


你搞错了,之所以不安全不是因为连接字符串在程序中是明文的,而是用户名、密码是以明文形式发给数据库服务器的,所以不安全。比如说,你使用一个wifi网络或者用hub连接到网络上,或者任何基于广播的通讯方式,那么如果这个网络上有人用嗅探工具抓包的话,它就可以得到你的程序到数据库的密码,那么这是非常危险的。
------解决方案--------------------
引用:
引用:1,不安全,存在客户端的信息都可以通过各种方式和途径找出来
2,效率低下,你为什么不考虑用webserivce或者wcf呢?
没学过这二者,都说WCF好难的


你可以使用wcf来做一个中间层。wcf其实也没有那么难,你想,都是写程序而已,能难到哪里去?
------解决方案--------------------
当然还有一种情况,用户本身就是不可信任的。比如你直接用数据库存放注册码、用户联系方式……

那么稍微高级一点的用户,自己在本机装一个抓包工具——那么他就可以看到你整个数据库中所有的用户了,想想看那是什么状况吧。
------解决方案--------------------
WCF和WEBSERVER都可以的