CSDN博客

img stone_kingnet

ActiveX控件与IE7安全分析

发表于2008/9/29 20:34:00  1062人阅读

http://www.solnet.cn/showart.asp?id=6
http://support.microsoft.com/kb/161873/en-us
http://www.microsoft.com/china/MSDN/library/NetComm/ActiveX+Security.mspx?mfr=true

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

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


详情请参见MSDN的文章:

About IObject Safety Extensions for Internet Explorer(http://msdn2.microsoft.com/EN-US/library/aa768181.aspx)

Safe Initialization and Scripting for ActiveX Controls(http://msdn2.microsoft.com/EN-US/library/aa751977.aspx)


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


所以,你一定要看一看这篇MSDN的文章:Designing Secure ActiveX Controls(http://msdn2.microsoft.com/EN-US/library/aa752035.aspx)

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

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


因此,ActiveX还是带有很多安全隐患的。所以,为了避免麻烦,不要随便浏览不靠谱的网页。
IE7 规范(http://blogs.msdn.com/ie/archive/2006/02/14/532211.aspx)
IE7 ReleaseNote(http://msdn.microsoft.com/en-us/ie/aa740486.aspx

http://www.microsoft.com/china/MSDN/library/NetComm/ActiveX+Security.mspx?mfr=true)

Protect mode
http://msdn.microsoft.com/en-us/library/bb250462.aspx#wpm_sftup

http://msdn.microsoft.com/en-us/library/bb250462.aspx#upm

http://support.microsoft.com/kb/240797

http://msdn.microsoft.com/en-us/library/bb250471.aspx
http://msdn.microsoft.com/en-us/library/bb250493.aspx
http://blogs.msdn.com/ie/archive/2006/02/14/532211.aspx
http://www.microsoft.com/china/MSDN/library/NetComm/ActiveX+Security.mspx?mfr=true

控件数字签名
http://www.wotrust.com/support/signcode_guide.htm

http://www.eyuansoft.com/blog/user1/1/archives/2008/2460.htm

阅读全文
0 0

相关文章推荐

img
取 消
img