`
yangzb
  • 浏览: 3507090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于IObjectSafety和ActiveX组件的脚本安全

 
阅读更多

都说ActiveX 危险,那么为什么XmlHttpRequest以及MediaPlayer都是用ActiveX的方式创建的,却没有问题?原来,这是因为这些ActiveX组件 都声明自己是脚本 安全 的,而IE的中级安全设置上,是允许脚本安全的ActiveX创建,并且不予警告的。(文/optman

IE怎么知道一个插件 是脚本安全的?它是通过以下两个办法。一是查询ActiveX组件是否实现了IObjectSafety接口 ,并且返回脚本安全;二是查询ActiveX组件是否在注册表的Component Category Manager里表明自己实现了CATID_SafeForInitializing和CATID_SafeForScripting。

详情请参见MSDN的文章:

About IObject Safety Extensions for Internet Explorer

Safe Initialization and Scripting for ActiveX Controls

一 个ActiveX组件不能随随便便的把自己声明为脚本安全的,万一被人利用了咋办?因为只要在系统中注册了,任何网站都可以使用该ActiveX 组件,有可能为做出损害用户利益的事情来。所以,作为一个负责任的开发者,在把自己的ActiveX组件声明为脚本安全以前,一定要再三思考,有没有可能 被别人恶意使用?特别是有访问本地资源功能的组件,更要小心,别让人破坏了用户的数据或是窃取了信息。

所以,你一定要看一看这篇MSDN的文章:Designing Secure ActiveX Controls

虽 然微软做了以上的防范,但是存在安全隐患。比如为了检查ActiveX组件是否支持IObjectSafety接口,你必须先把ActiveX组件给创建 了。在你发现它根本就不支持IObjectSafety之前,相关的Dll就会被加载,初始化代码已经执行。天知道那些ActiveX组件创建后会不会有 什么安全隐患,即便没有,也是浪费系统资源的。

下面这篇文章IObjectSafety and Internet Explorer 就提出了一些改进意见,认为应该先检查Component Category Manager里的值,因为这只是静态的检索不需要真正加载ActiveX组件。如果注册表表明其是安全的,再加载和检查IObjectSafety接 口。后面这一步是否有点多余?难道是怕有人篡改了注册表?也有可能。因为ActiveX组件是经过数字签名的,所以不可能生加上 IObjectSafety接口。所以,需要双重防范。

因此,ActiveX还是带有很多安全隐患的。所以,为了避免麻烦,不要随便浏览不靠谱的网页。

分享到:
评论

相关推荐

    C#web 开发ActiveX控件、生成MSI与制作CAB文件,更新msi

    `IObjectSafety`接口用于控制ActiveX控件的安全性,允许设置是否允许不受信任的脚本或数据调用控件。你需要在命名空间下定义这个接口,并提供两个方法:`GetInterfaceSafetyOptions`和`SetInterfaceSafetyOptions`...

    .Net魔法堂:史上最全的ActiveX开发教程——开发篇

    本文将详细介绍如何在.NET环境下开发ActiveX控件,包括开发环境的搭建、代码编写和安全设置。 首先,我们需要一个合适的开发环境。在这个例子中,使用的是Windows 7操作系统和Visual Studio 2010。开发ActiveX控件...

    VS2008(c#)开发ActiveX控件、访问及制作CAB包总结

    ActiveX技术允许开发者创建可以在多种应用程序中使用的组件,尤其是在网页中通过JavaScript进行交互。 **一、开发环境与工具** 开发ActiveX控件需要以下软件: 1. **开发环境**:Visual Studio 2008 SP1,这是一个...

    C#开发ActiveX控件及制作CAB包总结

    - `IObjectSafety`接口:ActiveX控件需要标记为可安全执行脚本,因此必须实现这个接口。`INTERFACESAFE_FOR_UNTRUSTED_CALLER`和`INTERFACESAFE_FOR_UNTRUSTED_DATA`常量表示控件对不受信任的调用者和数据是安全的...

    Visual C++实践与提高-COM和COM+篇『PDF』

    10.2.2 标记控件为初始化/脚本安全 10.2.3 持续属性 10.3 在ActiveX控件中访问DOM对象 10.3.1 什么是DOM(文档对象模型) 10.3.2 在ActiveX控件中访问DOM——例程DOMSamp 10.3.3 测试DOMCtrl控件 10.4 活动服务器...

    使用VS2008C_开发ActiveX控件

    - **优势**:利用ActiveX控件,开发者能够构建高度定制化的用户界面和功能强大的应用组件。 #### 二、开发环境配置 - **操作系统**:Windows 2003。 - **开发工具**:Visual Studio 2008。 - **.NET版本**:3.5。 ...

    使用VS2008C#开发ActiveX控件.pdf

    - **定义**:ActiveX控件是一种软件组件或对象,它可以被嵌入到网页或其他应用程序中,以增强其功能。早期称为OLE控件或OCX控件。 - **用途**:ActiveX控件广泛应用于网页开发中,用于插入多媒体效果、交互式对象等...

    C#编写Active控件,cab打包

    为了确保ActiveX控件在不同环境下的安全性和兼容性,我们需要实现`IObjectSafety`接口。这个接口允许控件指定哪些接口是安全的,可以被不受信任的调用者访问。在代码中,可以看到定义了`GetInterfaceSafetyOptions`...

    mfc创建ocx基础教程

    ActiveX 控件是一种重要的客户端组件技术,常用于Web应用程序中以增强交互性和功能。当用户通过浏览器访问包含这些控件的网页时,浏览器会自动下载并安装这些控件。安装完成后,用户就可以享受更丰富的应用体验。...

Global site tag (gtag.js) - Google Analytics