2023年12月11日发(作者:)

ActiveX技术原理

网络实名插件通过微软ActiveX技术来进行安装,点击弹出窗口中的“详细信息”后,微软已经告诉用户应该了解的信息(包括数字证书的发行商、有效期、所有者等),并根据用户点击“是”或“否”来决定是否安装插件。网络实名插件安装时的弹出窗口是ActiveX标准的安装界面,是由Windows控制的,只能通过点击上面的链接来查看软件详细介绍和使用许可协议等信息。

什么是ActiveX插件?

根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。

ActiveX插件的安装方式如何?

在因特网上,ActiveX插件软件的特点是:一般软件需要用户单独下载然后执行安装,而ActiveX插件是当用户浏览到特定的网页时,IE浏览器即可自动下载并提示用户安装。 ActiveX插件安装的一个前提是必须经过用户的同意及确认。

哪些厂商和软件使用ActiveX技术?

ActiveX插件技术是国际上通用的基于Windows平台的软件技术,除了网络实名插件之外,许多软件均采用此种方式开发,例如Flash动画播放插件、Microsoft MediaPlayer插件、CNNIC通用网址插件等。

浏览器如何保证ActiveX插件的安全性?

当通过Internet发行软件时,软件的安全性是一个非常引人注意的问题,IE浏览器通过以下的方式来保证ActiveX插件的安全:

ActiveX使用了两个补充性的策略:安全级别和证明,来追求进一步的软件安全性;

Microsoft提供了一套工具,可以用它来增加ActiveX对象的安全性;

通过Microsoft的验证代码工具,可以对ActiveX控件进行签名,这告诉用户你的确是控件的作者而且没有他人篡改过这个控件;

为了使用验证代码工具对组件进行签名,必须从证书授权机构获得一个数字证书;证书包含表明特定软件程序是正版的信息,这确保了其他程序不能再使用原程序的标识。证书还记录了颁发日 期。当您试图下载软件时,Internet Explorer 会验证证书中的信息,以及当前日期是否在证书的截止日期之前。如果在下载时该信息不是最新的和有效的,Internet Explorer 将显示一个警告;

在IE默认的安全级别中,ActiveX控件安装之前,用户可以根据自己对软件发行商和软件本身的信任程度,选择决定是否继续安装和运行此软件。

网络实名插件使用了国际权威安全厂商Verisign所颁发的数字证书进行签名,因此可以确保网络实名插件的真实性和安全性。

1. ActiveX概要

1.1. ActiveX的定义

ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使

得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应

用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被

用于方便地创建普通的桌面应用程序。

1.2. ActiveX的内容

ActiveX既包含服务器端技术,也包含客户端技术。其主要内容是:

* ActiveX控制(ActiveX Control);用于向WEB页面、Microsoft Word等支持ActiveX

的容器(Container)中插入COM对象。

* ActiveX文档(ActiveX Document);用于在WEB Browser或者其它支持ActiveX的容器

中浏览复合文档(非HTML文档),例如Microsoft Word文档,Microsoft Excel文档或者用户自

定义的文档等。

* ActiveX脚本描述(ActiveX Scripting);用于从客户端或者服务器端操纵ActiveX控

制和Java程序,传递数据,协调它们之间的操作。

* ActiveX服务器框架(ActiveX Server Framework);提供了一系列针对WEB服务器应

用程序设计各个方面的函数及其封装类,诸如服务器过滤器、HTML数据流控制等。

* 在Internet Explorer中内置Java虚拟机(Java Virtual Machine),从而使Java Applet

能够在Internet Explorer上运行,并可以与ActiveX控制通过脚本描述语言进行通信。

1.3. ActiveX与Java的比较

ActiveX提供了一种扩展包括Java在内的任何编程语言的机制,Java的开发人员可以在Applet

中使用ActiveX技术,直接嵌入ActiveX控制,或者以ActiveX技术为桥梁,将其它开发商提

供的多种语言的程序对象集成到Java中。与Java的字节码技术相比,ActiveX提供了“代码签名”

(Code Signing)技术保证其安全性。

1.4. Internet Explorer和Netscape Navigator

不言而喻,Microsoft的Internet Explorer全面支持ActiveX。同时,Microsoft提供了

Netscape Navigator的插件(Plug-In),从而使Navigator也可以浏览包含有ActiveX部件的WEB

站点。

2. ActiveX控制和Internet

ActiveX控制是OLE控制的更新版本。控制(Control)是建立可编程部件(Component)

的主要元素。ActiveX控制可以用于所有支持COM规范的容器中,或者作为Internet控制嵌入到WEB

页面中。用户访问该页面时将下载该控制并自动在本地注册。利用脚本描述语言(Script)可

以在控制之间以及客户与服务器之间通过设置属性(Property)、调用方法(Method)和激活事

件(Event)进行通信。

ActiveX控制与以前的OLE控制相比,具有更少的接口,并且可以没有窗口。所有的ActiveX

控制都支持IUnknown接口。

目前,很多第三方开发商编制了各式各样的ActiveX控制。在Internet上,有超过1000个

ActiveX控制供用户下载使用。在WINDOWS的SYSTEM目录下,保存有很多Window提供的ActiveX控

制。Microsoft Visual C++(以下简称VC)提供的MFC(Microsoft Foundation Classes)控制

都是ActiveX控制。

考虑到当前Internet相对较低的传输速率,设计运行于Internet的ActiveX控制时,必须

考虑以下几个问题:

* 控制尽可能小;

* 持续存储数据(Persist Data)如何保存;

* 如何在Internet上下载和安装;

* 控制如何在客户端注册;

3. ActiveX文档和Internet

ActiveX文档提供了传统的嵌入对象的扩展方法。ActiveX文档对象可以包含多个页,显

示在整个客户区中,并支持原有的菜单功能。与以往的嵌入对象不同的是,ActiveX文档对象不再

以一个阴影方框包围来显示,而是全框架(Full Frame),并总处于激活状态。

Microsoft Office97提供了Microsoft Office Binder,用来生成并浏览由Microsoft Word

、Microsoft Excel或者用户定义的ActiveX文档等构成的复合文档,每一种文档类型都可以

直接进行编辑修改。

ActiveX文档可以作为对象嵌入到WEB网页中,在WEB上发布。

4. ActiveX脚本描述语言

利用VBScript或者Microsoft JScript,可以向Web页面中加入可用于交互的ActiveX控制,

将数据预处理或者检验过程放在客户端进行,然后将结果传往WEB服务器。

5. ActiveX服务器框架

在WEB服务器上创建扩展应用程序,动态生成WEB页面。使用MFC提供的ISAPI类可以方便

地建立WEB服务器端的扩展应用程序。

6.2. ActiveX控制在WEB上的应用

考虑到WEB的安全性,为了在服务器与客户端建立良好的信任关系,必须为每个在WEB上

使用ActiveX控制设置一个“代码签名”(Code Signing)。VC5.0提供了生成供测试用的“代码

签名”的工具。如果要正式发布,则必须向有关机构申请。(参见http:///

intdev/signcode/)

在WEB页面中使用ActiveX控制,还要对之进行包装,将有关的动态连接库及信息文件压

缩到一个扩展名为CAB(Cabinet)文件中。可以使用VC5.0提供的工具包装ActiveX控制。在HTML

文件中,使用OBJECT标签插入ActiveX控制,并利用VBScript或者JScript访问该ActiveX控制。客

户端用Internet Explorer浏览此页面时,可以自动解包该文件。出于安全性的考虑,Internet

Explorer为ActiveX 部件的下载、初始化、是否拥有合法的代码签名以及是否允许Scripting

等设置了不同的安全级别,用户可根据需要进行设置。下面这个例子中,使用了ActiveX控制

"",当用鼠标单击此控制时,控制的标题将改变。

〈OBJECT

CLASSID="clsid:31291E80-728C-11CF-93D5-0020AF99504A"

CODEBASE="#version=1,0,0,0"

ID=chart1

WIDTH=400

HEIGHT=200

ALIGN=center

〈/OBJECT〉

〈SCRIPT language = "VBScript"〉

Sub chart1_Click()

ext="My Title"

End Sub

这里,必须提供该OCX的ClassID和文件路径或URL。客户端浏览此页面时,先在本地的注

册表中查找该ClassID,如果存在,则不必下载。否则,必须按照CODEBASE指定的路径搜索该控

制并下载。标签Object中的ID是该OCX的对象的名称,用来访问和设置对象属性,调用对象方法

等。

6.7. ActiveX SDK

VC5.0还提供了专门的WIN32 ActiveX开发工具:ActiveX Software Development Kit(

ActiveX SDK)。ActiveX SDK包含一系列接口定义及与Internet有关的WIN32函数,包括

ActiveX Scripting Component、Web Browsing Object、WebPost API等,用户可以利用这些接口和API

开发面向WEB的应用程序或ActiveX部件。

6.8. Visual C++ 6.0

1998年9月,Microsoft将推出的Visual C++6.0。VC6.0除了保留VC5.0的ActiveX支持外

,还将支持DHTML,MFC及ATL的类库及模板也有扩充。用户可以方便地开发出类似WEB浏览器界面

的应用程序。

7.2. 包装ActiveX部件

上述ActiveX部件都可以使用VB5.0的Setup Wizard进行包装,生成采用Lempel-Ziv压缩

算法的CAB文件,在WEB上发布。Setup Wizard将把相关的动态连接库及信息文件一同包装。使用

VB5.0生成的ActiveX 部件,可以包装成Safe Scripting和Safe Initializing。

7.3. ActiveX文档在WEB上的应用

向WEB页面中加入ActiveX文档,首先要将该ActiveX文档包装成CAB文件。由于Internet

Explorer读入ActiveX文档时,该文档将取代当前的WEB页,因此,一般将ActiveX文档(即HTML

的标记OBJECT)放在一个独立的HTML文件中。例如,下面这条语句建立了一个超链接:

〈A hRef=""〉Link to a ActiveX Document 〈/A〉

其中,是下载ActiveX文档的HTML 文件:

〈OBJECT

classid="clsid:2F390484-1C7D-11D0-8908-00A0C90395F4"

codebase="#version=1,0,0,0"〉

〈/OBJECT〉

这条语句将下载,并在Windows注册表中注册该ActiveX文档。

8. 小结

正如Internet和WEB技术一样,ActiveX技术的发展日新月异,新的更强大的开发工具使

得服务器及客户端的应用开发、网站建设变得更简单,并容易扩展和重用。随着Microsoft的包括

Windows NT、Internet Information Server、Active Server Pages以及Microsoft FrontPage、

Internet Explorer等组件在内完整的Internet解决方案被广泛使用,ActiveX技术将会有更

大的发展。

参考文献:

1. Visual C++技术内幕(第二版),[美]David J. Kruglinski著,王国印译,清华大学出

版社。

2. ActiveX开发人员指南,[美]Eric Tall,Mark Ginsburg著,章巍等译,机械工业出

版社。

3. Visual Basic 6.0:You Won't Believe What Just Hit the Web,Joshua Trupin,

Microsoft Interactive Network Developer(MIND),1998年8月。

4. Introduction to ActiveX Controls,Microsoft Corp.,MSDN,1998年8月。

5. Dynamic HTML and the Big Picture,John Swenson,MSDN Online,1997年11月。

6. A Brief Preview of the Visual Basic 5.0 Development Environment,MichaelOtey,

Windows NT Magazine ,1997年4月。