Предложите пользователю установить ActiveX / .Net Class Library из браузера - PullRequest
4 голосов
/ 07 октября 2009

Я создаю проект библиотеки классов .NET, который обращается к mshtml.HTMLDocument при вызове (из JavaScript). На моем компьютере все работает нормально, так как я изменил разрешения в .NET Configuration для надежных сайтов, чтобы иметь полный доступ.

Но для конечных пользователей я бы хотел, чтобы Internet Explorer подсказывал им, как, скажем, Windows Update.

Я подписал сборку со строгим именем и с автоматически подписанным сертификатом, и я утверждаю неуправляемый код SecurityPermission, но по-прежнему нет «желтой полосы», спрашивающей пользователя.

Кто-нибудь знает, как вызвать эту подсказку? Спасибо

Позднее редактирование : некоторые подробности: Я встраиваю компонент как <object classid="dllname.dll#namespace.classname" ><object>, и он работает, но не имеет разрешений безопасности.

Если я встраиваю его как <object classid="clsid:..guid.." codebase="dllname.dll#-1,-1,-1,-1"></object>, появляется разрешение на установку всплывающего окна, но объект не может быть создан.

Обновление: я сделал свой класс COM, реализовал Safe-for-scripting, я сделал MSI из него и поместил его в файл .CAB. Он устанавливается, если у пользователя есть мой сертификат в доверенных корнях, и он работает.

Однако он не работает, если ему не доверяют (без вопросов к пользователю, просто «... заблокировал следующий activex от…». Это действительно означает Я должен поставить свой деньги в SSL-сертификат?!?

1 Ответ

4 голосов
/ 12 октября 2009

Я предполагаю, что ваш вопрос таков: можете ли вы заставить IE предложить пользователю установить (ранее неизвестный) сертификат, чтобы разрешить запуск на странице подписанного и безопасного элемента управления ActiveX? (Если это не ваш вопрос, прокомментируйте, и я могу пересмотреть.)

Краткий ответ: нет. Вам потребуется выложить $$$ для сертификата для подписи кода из доверенного органа. (что, AFAIK, отличается от обычного сертификата SSL)

Длинный ответ:

С точки зрения безопасности подписывание неизвестным сертификатом похоже на неподписанное, поскольку нет доверенного органа, сообщающего клиенту, что он может доверять этому коду. И настройки IE по умолчанию не позволяют загружать и использовать неподписанные элементы управления ActiveX.

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

Конечно, есть обходные пути, но все они требуют, чтобы клиенты предпринимали действия для изменения своих настроек IE, или (в настройках интрасети) администраторы выдвигали изменения в настройках клиента.

Вот еще немного информации об этом из TechNet (http://technet.microsoft.com/en-us/library/cc505863.aspx):

Internet Explorer не настроен на доверять центру сертификации Любой, включая злоумышленников, может создать свой собственный центр сертификации и выпустить сертификаты. Поэтому интернет Explorer не доверяет всем ЦС дефолт. Вместо этого Internet Explorer доверяет только горстке общественных центров сертификации. Если сертификат был выдан ненадежный CA и веб-сайт находится на общедоступный интернет, сервер Администратор должен приобрести сертификат от доверенного CA. Если сайт в вашей интранете, клиент администратор должен настроить Internet Explorer доверяет выдаче CA.

...