ClickOnce шифрование строки подключения - PullRequest
2 голосов
/ 27 сентября 2011

Я работаю над своим первым настоящим приложением WinForms, и мой босс попросил меня найти способ зашифровать строку подключения внутри app.config.Я прочитал некоторые предложения в других вопросах, касающихся шифрования строки подключения, и я понимаю, что это не самый лучший ответ на проблему безопасности и конфиденциальности.Мы рассмотрели написание веб-сервисов для извлечения данных из базы данных, но это очень маленький проект, и, к сожалению, в настоящее время это не является приоритетом.

Редактировать: я упустил детали, над которыми я работаюдля государственного учреждения (муниципального колледжа), где, поскольку мы идентифицируем студентов по государственному идентификатору частной системы, нам необходимо защитить приложение в той или иной форме или форме.Студенты могут вводить свои сетевые идентификаторы, чтобы идентифицировать себя (что мы должны защищать в любом случае, поскольку у некоторых студентов есть запретительные приказы, и большая часть их записей должна храниться в секрете), но многие студенты знают только свои системные идентификаторы (которые всегда остаются закрытыми).*

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

public static void EncryptConfigSection(string sectionName)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    ConfigurationSection section = config.GetSection(sectionName);

    if (section != null)
    {
        if (section.IsReadOnly() == false &&
            section.SectionInformation.IsProtected == false)
        {
            section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");

            section.SectionInformation.ForceSave = true;

            config.Save(ConfigurationSaveMode.Full);
        }
    }

    ConfigurationManager.RefreshSection(sectionName);
}

Я вызываю эту функцию из функции Main () в Program.cs, но я не уверен, если этоэто подходящее место для этого.Кроме того, хотя эта функция правильно шифрует app.config, как только я выхожу из приложения, app.config расшифровывает.Я чувствую, что мне не хватает части головоломки (или, может быть, большой кусок головоломки).

Может кто-нибудь предложить мне некоторое понимание этих проблем?Я хотел бы повторить, что я признаю, что конечными целями здесь являются веб-сервисы, поэтому, если это просто не решаемая проблема с использованием CLickOnce, то я хочу предложить, чтобы мы сейчас расставили приоритеты при написании веб-сервисов.

1 Ответ

1 голос
/ 27 сентября 2011

Вы смотрели на эту тему ? В нем говорится о настройке клиента с использованием DPAPI, чтобы строка была зашифрована. Я бы по-прежнему смотрел на маршрут веб-служб, а не вставлял строку подключения, зашифрованную или нет, в клиентское приложение. Это ОСОБЕННО верно, если вы говорите о клиентских приложениях за пределами вашего домена (т. Е. Использование не сотрудниками).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...