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

提示用户从浏览器安装ActiveX/.Net类库,.net,html,permissions,activex,prompt,.net,Html,Permissions,Activex,Prompt,我构建了一个.NET类库项目,在调用时(从JavaScript)访问mshtml.HTMLDocument。自从我在.NET配置中将受信任站点的权限更改为具有完全访问权限以来,我的计算机上一切正常 但是对于最终用户,我希望Internet Explorer能够像Windows Update那样提示他们 我用一个强名称和一个自动签名证书签署了程序集,并且我正在断言非托管代码SecurityPermission,但仍然没有询问用户的“黄条” 有人知道怎么触发这个提示吗?谢谢 稍后编辑:更多详细信息:

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

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

我用一个强名称和一个自动签名证书签署了程序集,并且我正在断言非托管代码
SecurityPermission
,但仍然没有询问用户的“黄条”

有人知道怎么触发这个提示吗?谢谢

稍后编辑:更多详细信息: 我将组件作为
嵌入,它可以工作,但没有安全权限

如果我像
那样嵌入它,会出现安装弹出窗口的权限,但对象无法实例化

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


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

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

简短回答:否。您需要向可信机构支付$$$以获得代码签名证书。(当然,这与常规SSL证书不同)

长答案:

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

如果您尝试执行的操作被允许,那么精明的攻击者只需创建一个证书并对其进行签名,从而使用户更容易运行其攻击代码

当然也有解决办法,但都涉及到客户端采取措施更改其IE设置,或者(在intranet设置中)让管理员对客户端设置进行更改

以下是TechNet()提供的更多信息:

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


为什么不使用Silverlight而不是ActiveX?出于安全考虑,很多人都避免使用ActiveX。实际上,它通过WIALib使用扫描仪,然后发布扫描的图像。我不能使用Silverlight或Flash扫描afaict。给他们一个ClickOnce应用程序不是更简单吗?需要跳过的安全环要少得多在托管代码中。看看Google Chrome安装程序,看看它有多光滑。@Jerry Bullard:谢谢,但我认为在clickonce场景中,应用程序独立于web浏览器运行。也就是说,它不能访问DOM或类似的东西。谢谢Justin,你总结得很好。不过,我觉得它有点过于热情了wing未签名的代码(甚至没有提示)。我会预先找到一个可怕的屏幕,就像不受信任的HTTPS屏幕一样,但可以选择忽略。它不存在,是吗?不。这种情况不常见,不足以保证有一个特殊的屏幕。另外,因为合法的发布者有一个简单的解决方法(去买一个真正的证书,或者让你的系统管理员把你的证书推给客户!),微软几乎没有动力为这种情况构建特例用户界面。