都说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还是带有很多安全隐患的。所以,为了避免麻烦,不要随便浏览不靠谱的网页。
分享到:
相关推荐
`IObjectSafety`接口用于控制ActiveX控件的安全性,允许设置是否允许不受信任的脚本或数据调用控件。你需要在命名空间下定义这个接口,并提供两个方法:`GetInterfaceSafetyOptions`和`SetInterfaceSafetyOptions`...
本文将详细介绍如何在.NET环境下开发ActiveX控件,包括开发环境的搭建、代码编写和安全设置。 首先,我们需要一个合适的开发环境。在这个例子中,使用的是Windows 7操作系统和Visual Studio 2010。开发ActiveX控件...
ActiveX技术允许开发者创建可以在多种应用程序中使用的组件,尤其是在网页中通过JavaScript进行交互。 **一、开发环境与工具** 开发ActiveX控件需要以下软件: 1. **开发环境**:Visual Studio 2008 SP1,这是一个...
- `IObjectSafety`接口:ActiveX控件需要标记为可安全执行脚本,因此必须实现这个接口。`INTERFACESAFE_FOR_UNTRUSTED_CALLER`和`INTERFACESAFE_FOR_UNTRUSTED_DATA`常量表示控件对不受信任的调用者和数据是安全的...
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 活动服务器...
- **优势**:利用ActiveX控件,开发者能够构建高度定制化的用户界面和功能强大的应用组件。 #### 二、开发环境配置 - **操作系统**:Windows 2003。 - **开发工具**:Visual Studio 2008。 - **.NET版本**:3.5。 ...
- **定义**:ActiveX控件是一种软件组件或对象,它可以被嵌入到网页或其他应用程序中,以增强其功能。早期称为OLE控件或OCX控件。 - **用途**:ActiveX控件广泛应用于网页开发中,用于插入多媒体效果、交互式对象等...
为了确保ActiveX控件在不同环境下的安全性和兼容性,我们需要实现`IObjectSafety`接口。这个接口允许控件指定哪些接口是安全的,可以被不受信任的调用者访问。在代码中,可以看到定义了`GetInterfaceSafetyOptions`...
ActiveX 控件是一种重要的客户端组件技术,常用于Web应用程序中以增强交互性和功能。当用户通过浏览器访问包含这些控件的网页时,浏览器会自动下载并安装这些控件。安装完成后,用户就可以享受更丰富的应用体验。...