刚从B/S开发转到C、S上来,对这里还不是太了解,放在客户端软件里的XML中,再把XML加密这样是不是太不安全了,并且我要是改动数据库连接的话用户就要更新这个文件。。其他方法请大虾们指教下,最好能给例子源码,或参考网站。资料上好像是说写个服务器端来接收,但是没太明白,谁能帮忙提供个例子或资料~~~~

解决方案 »

  1.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Configuration;namespace MasterSoft.Common
    {
        public class ConfigrationHelper
        {
            /// Author:TerryLee        /// From:http://terrylee.cnblogs.com        /// </summary>
            //加密配备文件
            public static void EncryptConfiguration()
            {
                try
                {
                    // 使用什么类型的加密
                    string provider = "RsaProtectedConfigurationProvider";                Configuration config = null;                config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);                // 加密连接字符串                ConfigurationSection section = config.ConnectionStrings;                ProtectSection(provider, config, section);
                    section = config.AppSettings;
                    ProtectSection(provider, config, section);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }        private static void ProtectSection(string provider, Configuration config, ConfigurationSection section)
            {
                try
                {
                    if ((section.SectionInformation.IsProtected == false) &&                  (section.ElementInformation.IsLocked == false))
                    {
                        section.SectionInformation.ProtectSection(provider);                    section.SectionInformation.ForceSave = true;                    config.Save(ConfigurationSaveMode.Full);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }    }
    }
    在Application.Run 前执行就好啦.
      

  2.   

    可以考虑smartclient,这样和bs一样,数据层是在服务器端.
      

  3.   

    一般进行加密就比较安全了。或者用webservice作为中间层,这样只有服务器上才能看到连接字符串,
    如果还觉得不安全,那就再加密。
      

  4.   

    你的安全连接指的是什么?如果是为了在客户端保存数据库连接密码,将用户名等信息加密后存放在XML应该没问题的。C/S程序的麻烦就是服务器端的改动会要求客户端作相应的改动,没办法的。当然如果你写个服务器端程序也是可以的,用服务器端程序隔离数据库与客户端,对保护数据库是有好处的,即做成真正的C/S,而不是客户端/数据库。
      

  5.   

    使用webservice吧,这样就可以在服务器上保存数据库连接
      

  6.   

    如果是c/s系统,那你可以用webservice获取连接,这个对webservice也要进行安全验证,所以简单的说,只要你进行了加密,基本上就满足
      

  7.   


    意思就是客户端程序给页面中的B/S程序请求,B/S反馈出结构,C/S在获取下。是这个意思吧。。
    关于smartclient和服务器端程序怎么写我还是没搞清楚
    有例子或源码和参考资料吗,大侠们给个,谢谢了
      

  8.   

    顶。网上搜索个DES加密解密类,或者自己写个加密解密算法。
      

  9.   

    什么系统要那么高安全性呢?一般把连接字符串加密就可以了,没那么苛刻,实在不行就用WebService
      

  10.   

    比如说一个数据库连接字符串,我用DES给他加密了,有一个八位密钥。 
    加密后成了一段乱码。 然后我这套客户端软件给了用户,在运行的时候肯定要调用这个数据库库加密字符串,调用的时候就解密,解密的方法就是把加密后的字符和密钥添加进去,这样就解好了。。 但是用户可以看到我的dll文件,反编译,看到我解密的方法,不就把数据库连接给找到了吗??? 
      

  11.   

    服务器端可以写webservice返回dataset和本地请求返回dataset效果一样
      

  12.   

    我认为2楼的思想是是最好的。
    SmartClient说白了就是在CS构架体系的客户端软件添加WebService,将你的所有数据层都封装到WebService里面,
    你不是以前做BS开发吗,这个对你来说应该很简单的。这样安全,又高效。