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

标签 .net html permissions activex prompt

我构建了一个访问 mshtml.HTMLDocument 的 .NET 类库项目调用时(从 JavaScript)。在我的机器上一切正常,因为我在 .NET Configuration for Trusted Sites 中更改了权限以具有完全访问权限。

但对于最终用户,我希望 Internet Explorer 能够提示他们,就像 Windows 更新一样。

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

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

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

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

更新:我把我的类变成了 COM 类,实现了脚本安全,我用它制作了一个 MSI 并将它放在一个 .CAB 文件中。如果用户在 Trusted Roots 中有我的证书,它就会安装,并且它可以工作。

但如果它不受信任,它就不起作用(没有问题给用户,只是'..已经阻止了以下 activex ......'。那真的意味着我必须把我的钱变成 SSL 证书?!?

最佳答案

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

简短回答:否。您需要支付 $$$ 从受信任的权威机构获得代码签名证书。 (据我所知,不同于常规的 SSL 证书)

长答案:

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

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

当然有变通办法,但所有变通办法都涉及客户端采取行动更改其 IE 设置,或(在 Intranet 设置中)让管理员推送对客户端设置的更改。

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

Internet Explorer is not configured to trust the certificate authority Anyone, including attackers, can create their own CA and issue certificates. Therefore, Internet Explorer does not trust all CAs by default. Instead, Internet Explorer trusts only a handful of public CAs. If the certificate was issued by an untrusted CA and the website is on the public Internet, the server administrator should acquire a certificate from a trusted CA. If the website is on your intranet, a client administrator should configure Internet Explorer to trust the issuing CA.

关于.net - 提示用户从浏览器安装 ActiveX/.Net 类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529997/

相关文章:

c# - C#中的一次性单例

javascript - 如何在 Simile 展览 map 中显示位置?

android - 绕过android usb主机权限确认对话框

architecture - 在设计像 Stack Overflow 这样的基于点的权限系统时,需要考虑哪些架构最佳实践?

C# 将代码添加到 FormClosing 事件会禁用 MdiParent 上的 X

c# - 没有虚拟和覆盖的功能覆盖

c# - 通过接口(interface)访问静态属性

ruby-on-rails - 为什么内容会超出其基础 5 div 容器,我该如何解决?

php - 如何将 PHP 数组返回给调用它的 javascript 函数

c# - 移动后正确设置文件的权限