4

我构建了一个 .NET 类库项目,该项目mshtml.HTMLDocument在调用时访问(来自 JavaScript)。自从我将受信任站点的 .NET 配置中的权限更改为具有完全访问权限后,我的机器上一切正常。

但对于最终用户,我希望 Internet Explorer 能够像 Windows Update 那样提示他们。

我使用强名称和自动签名证书对程序集进行了签名,并且我断言 Unmanaged code SecurityPermission,但仍然没有询问用户的“黄条”。

有人知道如何触发此提示吗?谢谢

稍后编辑:更多细节:我将组件嵌入<object classid="dllname.dll#namespace.classname" ><object>它并且它可以工作,但没有安全权限。

如果我像这样嵌入它<object classid="clsid:..guid.." codebase="dllname.dll#-1,-1,-1,-1"></object>,则会出现安装弹出窗口的权限,但该对象无法实例化。

更新:我将我的类设为 COM 类,实现了安全脚本,我用它制作了一个 MSI 并将其放入 .CAB 文件中。如果用户在受信任的根目录中有我的证书,它就会安装,并且它可以工作。

但是,如果它不受信任,它就不起作用(对用户没有问题,只是'..阻止了以下 activex 来自..'。这真的意味着我必须把钱存入 SSL 证书吗?!?

4

1 回答 1

4

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

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

长答案:

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

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

当然有一些变通方法,但都涉及客户端采取措施更改其 IE 设置,或者(在 Intranet 设置中)让管理员推出对客户端设置的更改。

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

Internet Explorer 未配置为信任证书颁发机构 任何人(包括攻击者)都可以创建自己的 CA 并颁发证书。因此,默认情况下 Internet Explorer 并不信任所有 CA。相反,Internet Explorer 只信任少数公共 CA。如果证书是由不受信任的 CA 颁发的,并且网站位于公共 Internet 上,则服务器管理员应从受信任的 CA 获取证书。如果网站在您的 Intranet 上,则客户端管理员应将 Internet Explorer 配置为信任颁发 CA。

于 2009-10-12T18:18:30.247 回答