получение зашифрованной строки подключения из web.config в классический asp через COM-объект - PullRequest
1 голос
/ 04 февраля 2012

как нам получить доступ к строке подключения web.config в COM-объекте? я не могу получить дескриптор файла web.config. Просьба помочь

У меня есть классическое приложение asp, которое должно зашифровать connectionString к БД. в настоящее время на сайте есть файл database.asp, который включен во все страницы для получения соединения. Команда безопасности попросила нас удалить имя пользователя в открытом тексте, pw и имя сервера. и я пытаюсь создать COM-объект, чтобы получить файл web.config с зашифрованной строкой cionnection из корня приложения, а затем передать connString в качестве переменной для использования в

Set cn = Server.CreateObject("ADODB.Connection")
cn.CursorLocation = 3
set cnStringReader = Server.CreateObject("PropertyReader.FetchProperty")
cnString = cnStringReader.getProperty();
cn.ConnectionString(cnString) 

но COM-объект не находит файл web.config. Я сохранил объект COM в каталоге bin каталога веб-приложений. и зарегистрировал его, используя gacutil.

пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

Когда ASP CreateObject создает ваш COM-компонент, он не может передать контекст веб-приложения базовому компоненту .NET.Компонент загружается в стандартный AppDomain по умолчанию так же, как если бы вы использовали CreateObject в файле .vbs и использовали сценарий для его выполнения.

Следовательно, стандарт .NET OpenWebConfiguration не имеет контекста веб-сайта изкоторый может определить физический путь, который представляет "/", и, следовательно, какой файл web.config загружать.

Если вы можете разрешить имя сайта (как видно из диспетчера IIS), тогда вы можете использовать другую перегрузку * 1006.* который принимает имя сайта в качестве второго параметра.

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

Лично, если вы должны соблюдать требования «Команды безопасности», вы можете попросить их предложить, как это сделать.Мой подход заключается в использовании интегрированной безопасности SSPI, поэтому нет необходимости хранить какие-либо пары имя пользователя / пароль в любой форме.

0 голосов
/ 16 августа 2013

Из ASP Classic вы должны читать web.config как обычный XML-файл (т.е. используя XmlDocument). Для этого требуется полный путь к файлу web.config, который вы можете получить из Request.ServerVariables("APPL_PHYSICAL_PATH") + «web.config».

Обратите внимание: поскольку вы читаете файл web.config как обычный файл XML, утилиты шифрования, входящие в состав WebConfigurationManager, не работают. Вам придется свернуть свое собственное шифрование.

Будьте осторожны, вызывая объекты .NET, завернутые в оболочки COM из ASP Classic. Это может стать странным.

http://connect.microsoft.com/VisualStudio/feedback/details/294241/kb937143-breaks-asp-to-net-com-interop

http://support.microsoft.com/kb/945701

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