我们开发了一个在浏览器中通过JavaScript调用的ActiveX对象。
我们已经实施了IObjectSafety,我们也使用regasm mydll.dll / tlb / codebase注册了这个dll
当我们在本地打开此页面时,我们会收到以下消息: -
IE限制此页面运行脚本或ActiveX控件?然后,我们必须选择允许阻止的内容才能运行..
但是,从服务器运行页面时没有这样的消息...
为什么这条消息会在本地出现?从ActiveX对象的代码中修复此问题的解决方法是什么?
我们使用VS2010 snk文件签署了ActiveX dll ... 我们为activex dll实现了IObjectSafety ... 我们已经使用regasm mydll.dll / tlb / codebase注册了这个dll 如果我之前没有实现上述两个步骤,那么在IE本地以及服务器上打开页面时,我是否也会遇到错误?
答案 0 :(得分:1)
使用自生成的.SNK文件对您的DLL进行签名是不够的。您需要购买由经过认证的受信任机构颁发的全功能Authenticode签名证书。购物,选择范围,例如从this到this。
获得证书后,how to use it。
需要支持IObjectSafety
,但它不会使您的控件自动安全。你只是声明它是安全的,这是一个声明。如果您将控件部署在1000个PC上,那么有人会创建一个滥用控件API的VBScript木马,您可能会因虚假声明而被起诉。为了保持安全,您应该使用类似Sitelock
template的内容。
但是,如果您通过file://
协议在本地运行您的网页,并且执行您的DLL的手动部署,那么这是一个不同的故事。 在这种情况下,您无需使用Authenticode 对您的控件进行签名。但是,出于安全原因,默认情况下禁用所有ActiveX控件(安全和不安全)。更多细节:Understanding Local Machine Zone Lockdown。你可以使用Mark of the Web来解决它。