Мы разработали объект ActiveX, который вызывается через JavaScript в браузере.

Мы реализовали IObjectSafety, а также зарегистрировали эту dll с помощью regasm mydll.dll / tlb / codebase

Когда мы открываем эту страницу локально, мы получаем сообщение как: -

IE запретил этой странице запускать сценарии или элементы управления ActiveX? Затем мы должны выбрать Разрешить заблокированный контент для его запуска.

Однако такого сообщения нет, когда страница запускается с сервера ...

Почему это сообщение появляется локально? Как исправить это в коде объекта ActiveX?

Мы подписали ActiveX dll с помощью файла VS2010 snk ... Мы реализовали IObjectSafety для activex dll ... Мы зарегистрировали эту dll с помощью regasm mydll.dll / tlb / codebase Если бы я не реализовал вышеуказанные 2 шага, тогда бы У меня также была ошибка при открытии страницы в IE локально, а также на сервере?

1
variable 22 Янв 2014 в 09:47

1 ответ

Лучший ответ

Недостаточно подписать вашу DLL самогенерированным файлом .SNK. Вам необходимо купить полнофункциональный сертификат подписи Authenticode, выданный аккредитованным доверенным центром. Делайте покупки вокруг, варианты диапазонов, например с this на this.

После получения сертификата, вот как использовать его .

Требуется поддержка IObjectSafety, но это не делает ваш контроль автоматически безопасным. Вы просто заявляете, что это безопасно, это заявление. Если ваш элемент управления развернут на 1000 ПК, а затем кто-то создаст троян VBScript, злоупотребляя API вашего элемента управления, вы можете получить судебный иск за ложное утверждение. Чтобы оставаться в безопасности, вы должны использовать что-то вроде Sitelock шаблон.

Однако, если ваши страницы запускаются локально по протоколу file:// и выполняются вручную вашей DLL, это совсем другое дело. В этом случае вам не нужно подписывать свой контроль с помощью Authenticode . Однако все элементы управления ActiveX (безопасные и небезопасные) по умолчанию отключены из соображений безопасности. Подробнее: Общие сведения о блокировке зоны локального компьютера. Вы можете обойти это, используя Знак Интернета < / а>.

1
noseratio 24 Янв 2014 в 07:46
Нет такого сообщения, когда страница запускается с сервера ... и мы использовали IobjectSafety, чтобы пометить объект как безопасный ... мы все еще требуем покупать сертификаты?
 – 
variable
23 Янв 2014 в 11:23
@NachiketKamat, с какого сервера, что-то вроде localhost? Он может принадлежать другой зоне безопасности IE. Сбросьте ВСЕ настройки IE до значений по умолчанию, отмените регистрацию элемента управления с помощью regsvr32 /u control.dll на клиентском ПК, на котором вы его тестируете, затем повторите попытку. Также обратите внимание на мое обновление о IObjectSafety. Да, я считаю, что вам все еще нужен сертификат, если вы собираетесь управлять своим управлением через Интернет.
 – 
noseratio
23 Янв 2014 в 11:32
Я зарегистрировал элемент управления с помощью regasm mydll.dll / tlb / codebase, и администратор собирается запустить эту команду regasm на всех 1000 ПК. Так почему вы просите меня отменить регистрацию?
 – 
variable
23 Янв 2014 в 12:38
@NachiketKamat, если вы выполняете развертывание вручную и обслуживаете страницы из локальной файловой системы, это меняет все. Смотрите мое обновление.
 – 
noseratio
23 Янв 2014 в 12:55
localhost принадлежит зоне "Интернет". file:// принадлежит зоне «Мой компьютер». У них разные настройки безопасности по умолчанию. Щелкните правой кнопкой мыши свою страницу в IE и проверьте ее зону в свойствах.
 – 
noseratio
23 Янв 2014 в 13:02