【问题标题】:Why doesn't implementing IObjectSafety make a difference?为什么不实现 IObjectSafety 有所作为?
【发布时间】:2011-12-07 22:41:22
【问题描述】:

我们有一个 activex 对象,它实现了 IObjectSafety 以表明它对于脚本是安全的。它从受信任的站点安装。但我们仍然收到 IE 的投诉,即此页面上的控件对于脚本来说是不安全的。

运行我们的 activex 的站点的管理员不愿意启用未标记为可安全执行脚本的控件,即使它是受信任的区域。

我们的 cab 及其所有组件都已签名(我们最终通过对进入 msi 安装程序的每个 dll 进行签名,让 uverified 发布者离开)

有人对如何使 IObjectSafety 正常工作有任何想法吗?

【问题讨论】:

  • 严重误解了它的意图。 “请点击确定按钮,我可以安全安装。保证。”
  • 为在受控环境中运行的指定应用程序专门编写的 activex 与从野外下载某些东西之间存在很大差异。话虽这么说,我个人不明白 IObjectSafety 的目的,因为显然有人打算造成损害会说是的,他们的对象是安全的。

标签: internet-explorer scripting activex security


【解决方案1】:

确保为 IObjectSafety 使用正确的 GUID。您的界面应如下所示,带有特定的 GUID:

[ComImport]
// This GUID matters!
[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
    [PreserveSig]
    int GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions);

    [PreserveSig]
    int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionsMask, int dwEnabledOptions);
}

那里有一些链接概述了如何实现IObjectSafety,但这是我发现的唯一一个calls out the fact that the Guid matters。在对我的代码进行更改后,IE 不再抱怨。

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多