зашифруйте SQL connectionstring c#

Я создал c# приложение (не веб-страница asp), который соединяется с sql сервером 2005. В моем исходном коде пароль и идентификатор пользователя для этого SQL-сервера являются кодированным простым текстом в ConnectionString.

SqlConnection con = new SqlConnection();
con.ConnectionString = 
         "Data Source=server1;"+
         "Initial Catalog=mydatabase;"+
         "Integrated Security=no;"+
         "User ID=admin;Password=mypassword;";
con.Open();

Существует ли простой способ зашифровать пароль или целый connectionstring, что другие народы, которые демонтируют мой инструмент, не в состоянии видеть пароль?

спасибо

16
задан Groo 29 January 2010 в 07:34
поделиться

5 ответов

Вы должны хранить строку подключения в файле конфигурации и шифровать этот раздел. Смотри http://www.4guysfromrolla.com/articles/021506-1.aspx или http://msdn.microsoft.com/en-us/library/89211k9b%28vs.80% 29.aspx .

9
ответ дан 30 November 2019 в 23:09
поделиться

Вы можете зашифровать разделы в app.config так же, как web.config. MS вызывает функцию Защищенная конфигурация . Поскольку как зашифрованные данные, так и ключ находятся на одной машине, это только усложняет, но теоретически не делает невозможным доступ к данным.

-121--2587935-

Добавить /Разработчик/Платформы/iStartOS.platform/Разработчик/SDK/iStartOS3.0.sdk/usr/include/c + +/4.2.1/armv6-apple-darwin9/ в качестве пути включения.

Также, пожалуйста, подайте сообщение об ошибке в Apple.

-121--4167042-

Нет, можно только затруднить

Лучше разрешить приложению использовать специальный логин базы данных, который получил доступ только к необходимым таблицам/процедурам.

1
ответ дан 30 November 2019 в 23:09
поделиться

Вы также можете хранить имя пользователя и пароль в реестре вместо хранения в файле конфигурации. Прочитайте имя пользователя и пароль из реестра при попытке подключения к базе данных. Помните, что вы должны зашифровать имя пользователя и пароль во время хранения в реестре и расшифруйте имя пользователя и пароль при извлечении из реестра.

-3
ответ дан 30 November 2019 в 23:09
поделиться

Вы можете шифровать секции в app.config так же, как и web.config. MS называет его Protected Configuration. Так как и зашифрованные данные, и ключ находятся на одной машине, это только усложняет, но теоретически не делает невозможным доступ к данным.

0
ответ дан 30 November 2019 в 23:09
поделиться

Есть два способа сделать это:

1) Можно использовать секцию Configuration Secure Section для шифрования и расшифровки соединений с исходным кодом:

try
    {
        // Open the configuration file and retrieve 
        // the connectionStrings section.
        Configuration config = ConfigurationManager.
            OpenExeConfiguration(exeConfigName);

        ConnectionStringsSection section =
            config.GetSection("connectionStrings")
            as ConnectionStringsSection;

        if (section.SectionInformation.IsProtected)
        {
            // Remove encryption.
            section.SectionInformation.UnprotectSection();
        }
        else
        {
            // Encrypt the section.
            section.SectionInformation.ProtectSection(
                "DataProtectionConfigurationProvider");
        }
        // Save the current configuration.
        config.Save();

        Console.WriteLine("Protected={0}",
            section.SectionInformation.IsProtected);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

2) Можно использовать Enterprise Library Data Access Application Block для выполнения шифровки с помощью RSAProtectedConfigurationProvider или DPAPIProtectedConfigurationProvider.

Для полной артикуляции перейдите по адресу --> http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

4
ответ дан 30 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: