зашифровать разделы конфигурации файла web.config в моно - PullRequest
2 голосов
/ 12 марта 2009

Я вижу, что можно использовать ASP_regiis для шифрования разделов файла web.config, но я запускаю mono на коробке с использованием Apache Есть ли способы сделать это в Mono / Linux?

Ответы [ 2 ]

0 голосов
/ 15 мая 2009

Вы можете сделать это программно, используя System.Configuration.ConfigurationManager, чтобы получить объект ConfigurationSection и вызвать для него SectionInformation.ProtecteSection ("DataProtectionConfigurationProvider")

    /// <summary>
    /// Encrypts a Config section from the given Configuration object
    /// </summary>
    /// <param name="sectionKey">Path to the section to Encrypt</param>
    /// <param name="config">Configuration</param>
    public static void EncryptConfigSection(String sectionKey, Configuration config)
    {
        ConfigurationSection section = config.GetSection(sectionKey);
        if (section != null)
        {
            if (!section.SectionInformation.IsProtected)
            {
                if (!section.ElementInformation.IsLocked)
                {
                    section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
                    section.SectionInformation.ForceSave = true;
                    config.Save(ConfigurationSaveMode.Full);
                }
            }
        }
    }

Для веб-конфигурации вам необходимо использовать System.Web.Configuration.WebConfigurationManager, чтобы получить объект конфигурации, который затем можно передать вышеуказанной функции. Обратите внимание, что для файлов web.config шифруются только определенные разделы.

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

Ознакомьтесь со следующей статьей Джона Галлоуэя об альтернативах простому шифрованию раздела AppSettings: http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx

0 голосов
/ 12 марта 2009

Если я не ошибаюсь, IIS не будет обслуживать файл Web.Config. Если вы беспокоитесь о том, что люди вытаскивают его из Интернета, я уверен, что вы можете заблокировать этот файл от Apache.

Если вы говорите о местной безопасности, я не думаю, что есть "хороший" способ сделать это. Скажем, у вас есть пароль в вашем Web.Config единственный способ правильно зашифровать это, чтобы потребовать другой пароль для расшифровки файла. Итак, по сути, поскольку (я предполагаю) вам нужен программный доступ к файлу, вы просто перемещаетесь туда, где храните свои пароли, из Web.Config в исходный код или в другой внешний файл, который на самом деле ничего вам не дает , Все другие методы шифрования, для которых не требуется пароль для расшифровки, просто затеняют файл, но довольно часто бывают незаметными.

Прочтите эту статью о Pidgin (ранее gaim), хранящем пароли локально http://developer.pidgin.im/wiki/PlainTextPasswords. Кроме того эта статья википедии о ключах шифрования может быть полезной. Оба обсуждают врожденные ограничения безопасности через неизвестность .

По сути, если вы заблокируете файл локально, используйте для этого защиту на основе учетной записи пользователя, то есть ограничьте доступ для чтения / записи к файлу.

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