ActiveX не работает должным образом с настройками безопасности по умолчанию

StackOverflow https://stackoverflow.com/questions/1644828

Вопрос

Я написал элемент управления ActiveX на C # и заставил его работать с помощью команды regasm, и он работает нормально, если уровень безопасности установлен на низком уровне. Затем в качестве следующего шага я сделал установщик .cab (ICD). - Загрузчик компонентов Интернета), и подписали мой .cab-файл и ActiveX .dll-файл тестовым сертификатом. когда я открываю html-страницу из своего браузера, установочные части работают нормально с настройками безопасности IE по умолчанию, но в конце кажется, что ничего не установлено и вместо ActiveX отображается красный крестик. Кроме того, я исследовал папку «Загрузить программные файлы» в каталоге Windows, в столбце состояния она показывает слово «неизвестно». пока он "установлен" для всех остальных activeX. в чем может быть проблема. Более того, если я использую команду regasm, чтобы зарегистрировать сборку, она работает нормально, и я подписал ActiveX, но все же мне нужно переместить панель безопасности на низкое значение в настройках браузера? почему так? тогда какова цель подписания? Я использовал RegisterServer = yes в моем INF-файле

Пожалуйста, дайте мне знать, если кто-то уже прошел через эту проблему?

Это было полезно?

Решение

Для того, чтобы работать в IE, вам также необходимо реализовать IObjectSafety, чтобы IE знал, что безопасно вызываться ненадежным абонентом и / или с ненадежными данными. (Если это действительно безопасно, то есть)

Лично я делал это только в C ++ & amp; ATL, а не C #, но здесь есть сообщение в блоге, которое должно помочь вам достичь этого в C #.

http://blog.devstone.com/aaron/2007 /06/12/ImplementingIObjectSafetyInNETMarkingClassesSafeForScripting.aspx

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

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

Когда вы реализуете IObjectSafety, нужно вернуть INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA, вы говорите IE, что объект не может быть использован злоумышленником кем-либо еще, и поэтому его безопасно запускать в сочетании с кодом, которому пользователь явно не доверяет.

Другие советы

Для меня решение выше не работает. Мне нужно было зарегистрировать также TLB

с: regasm MyDll.DLL / tlb

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top