提示用户从浏览器安装ActiveX / .Net类库

时间:2009-10-07 07:09:08

标签: .net html permissions activex prompt

我构建了一个.NET类库项目,在调用时(从JavaScript)访问mshtml.HTMLDocument。由于我将可信站点的.NET配置中的权限更改为具有完全访问权限,因此我的计算机上的一切正常。

但对于最终用户,我希望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 个答案:

答案 0 :(得分:4)

我假设您的问题是:您是否可以强制IE提示用户安装(以前未知的)证书,以便在页面上运行其他已签名且安全的ActiveX控件? (如果这不是你的问题,评论我可以修改。)

简短回答:否。您需要为受信任机构的代码签名证书支付$$$。 (即AFAIK,与常规SSL证书不同)

答案很长:

从安全角度来看,使用未知证书进行签名与未签名证书类似,因为没有可信任的权限告诉客户端他可以信任该代码。 IE的默认设置不允许下载和使用未签名的ActiveX控件。

如果你想要做的事情被允许,那么一个精明的攻击者可以简单地创建一个证书,签名,从而使用户更容易运行他们的攻击代码。

肯定有解决方法,但都涉及客户采取措施更改其IE设置,或者(在Intranet设置中)让管理员推出对客户端设置的更改。

以下是TechNet(http://technet.microsoft.com/en-us/library/cc505863.aspx)的更多相关信息:

  

Internet Explorer未配置为   信任证书颁发机构   任何人,包括攻击者,都可以   创建自己的CA和问题   证书。因此,互联网   资源管理器不信任所有CA.   默认。相反,Internet Explorer   只信任少数公共CA.   如果证书是由。颁发的   不受信任的CA和网站上   公共互联网,服务器   管理员应该获得一个   来自可信CA的证书。如果   网站在您的内部网上,一个客户端   管理员应该配置   Internet Explorer信任发布   CA