在开发WEB应用程序时,数据库连接字符串可以以明文放在配置文件里,但是在开发Winform时就不能用明文放在配置文件里,不然就没有安全可言,
如果放加密字符串在配置文件里,就只能亲自动手写dataSet,不能使用VS自动生存的强类型DateSet,以及以很多自动功能,如bindingSource,BindingNavigator等,
当然这不是最主要的,最主要的是不能自动生成窗体绑定数据库的种控件,各位在这方面是如何处理的呀?
有什么第三方工具或是可以修改自动生存的DateSet文件吗?,哪个文件我看不懂不知道修改什么地方,

解决方案 »

  1. http://www.cnblogs.com/dongdonghuihui/archive/2009/08/13/1545446.html
      

  2. 感谢楼上的及时回复,不过我想你理解错了我的意思,用语句连接数据库我会,
    我想用VS自动工具,开发Winform程序,但是不可以把连接字符串明文放在配置文件里如果字符串放在程序中每一次服务器地址更改就会头大
      

  3. 用配置文件APP.config.这是配置文件中的代码<?xml version="1.0"?>
    <configuration>
      <appSettings>
        <add key="connectingString" value="Server=192.168.1.110;Database=数据库名;User ID=用户名;Password=密码"/>
      </appSettings>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
      

  4. 任何客户端直连数据库的设计都必然存在数据库的安全问题,这是结构决定的,无可避免。
    一般来说客户端都是跟Server交互,由Server跟DB交互。
      

  5. 写成外部XML文件,自己再写个DES或RC4的加密(网上很多的),将加密的字符串放入外部XML,WINFORM启动后写成一个公共类,将XML的加密字符串解密后放入公共变量(也可以将获取执行SQL语句的3种方法放入公共类),然后每次执行时调用这个公共类即可。
      

  6. 别人一监听一下发出去的数据包就知道你DB所在的地址了。把DB暴露出来是一件极其危险的事情。
    当然,如果你做的只是学校里面那些 糊弄人的“项目”,这些都是无所谓的。
      

  7.         private static string connString
            {
                get
                {
                    return "Data Source=WF;Initial Catalog=HotelManage;User ID=sa;pwd=sasa";
                }
            }        public static SqlCommand comm;
            //查询所有
            public static SqlDataReader getdateReager(string sql)
            {
                SqlConnection conn = new SqlConnection(connString);
                conn.Open();
                SqlCommand comm = new SqlCommand(sql, conn);
                SqlDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
                return dr;
            }
      

  8. 把数据库用户名 密码 用可逆加密存在注册表,XML,INI 里。。
      

  9. 你显然winfrom开发没入门.低调些,看些基础书吧,你说的这些东西,跟DataSet没有一毛钱的关系.
      

  10. 开发Winform程序就在app.config 配置连接字符串
    开发Webform程序就在web.config 配置
    自己好好看下书
      

  11. 我目前就是用的这种方式,但是这样做就不能使用VS工具生成强类型DATASET呀?开发过程中的所以代码都要自己写
      

  12. 一样,我也求答案。 采取将连接字符串写成类的方式,然后在form调用,这个大家都会,结论是太麻烦。关键是如何配合DATASET和由其生成的TableAdapter。
    并且,还能够在发布安装后修改。
      

  13. 个人觉得使用强类型DataSet进行开发,不是好的选择。
      

  14. 4楼,已经有答案,用app.config
      


  15. 如果你要这么说,那是没有办法了,无论是用连接串,还是用DataSet绑定,都是直接连接数据库,监听都可以被发现地址和端口, 除非你完全信任自己的技术,你自己开发一个服务端(让服务端连接数据库),不过不见得你的的安全就做的比微软做的好。所以,不要纠结些没有意义的事,就目前阶段的能力,就做能力之内的事, 数据库你可以配置的更安全点。再说了,你给都给家客户端用了,人家知道你的数据库连接密码又有什么问题的。 再说了,那密码还是要客户自己输入的。关键是你要给这个客户的账号和密码要配置好策略,这才是关键,在保证所有功能的前提下做最大的功能权限限制。
      

  16. 建议使用加密存储连接字符串。如果需要更高安全性,可以使用WEBSERVICE
      

类似问题 »