日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ActiveX控件解析

 北風(fēng)雨 2011-09-05

ActiveX控件解析

ActiveX是Microsoft對(duì)于一系列面向?qū)ο蟪绦蚣夹g(shù)和工具的稱呼,其中主要的技術(shù)是組件對(duì)象模型(COM)。ActiveX控件是Microsoft為抗衡Sun的JAVA技術(shù)而提出的,功能和JAVA applet功能類似。在Windows系統(tǒng)中,有一些以O(shè)CX結(jié)尾的文件。OCX代表"對(duì)象鏈接與嵌入控件"(OLE),用于處理桌面文件的混合使用?,F(xiàn)在COM的概念已經(jīng)取代OLE的一部分,Microsoft也使用ActiveX控件代表組件對(duì)象。組件的最大優(yōu)點(diǎn)就是可以被大多數(shù)應(yīng)用程序再使用(這些應(yīng)用程序稱為組件容器)。使用ActiveX控件可快速實(shí)現(xiàn)小型的組件重用、代碼共享,從而提高編程效率,降低開(kāi)發(fā)成本。大家小時(shí)候都玩過(guò)七巧板和積木,用簡(jiǎn)單的形狀就能構(gòu)造出我們所能想象出的各種千奇百怪的物體,編程也是這樣,組件就好比積木塊,我們把組件按不同的方式組合起來(lái),就能實(shí)現(xiàn)單個(gè)程序達(dá)不到的功能。ActiveX控件運(yùn)行在客戶端。通過(guò)它,我們可以獲得客戶端的一些信息,如IC卡的信息,客戶端的驗(yàn)證等,同時(shí),它也可以在我們?yōu)g覽網(wǎng)頁(yè)時(shí),得到更多的功能體驗(yàn),比如觀看Flash動(dòng)畫(huà)、欣賞電影、歌曲等等。但是ActiveX控件也有許多缺點(diǎn),最大的缺點(diǎn)是客戶端的部署很困難,如客戶端不能正確下載,下載了以后不能正確執(zhí)行,下載的時(shí)候需要設(shè)置IE的安全級(jí)別等等,這也是我行網(wǎng)銀使用中客戶咨詢的熱點(diǎn)。另外一個(gè)缺點(diǎn)就是由于ActiveX控件可被黑客用來(lái)放毒,所以大多數(shù)安全類軟件都會(huì)對(duì)其嚴(yán)防死守,這也給我行的控件安裝帶來(lái)了很大的影響。為了幫助大家解決控件安裝使用中的一些問(wèn)題,我將從以下幾方面對(duì)控件做一個(gè)簡(jiǎn)單的介紹。

 

控件的工作原理

在介紹控件之前,有必要先來(lái)講一下GUID。

在生活當(dāng)中,很多事物都可以用一個(gè)編號(hào)來(lái)進(jìn)行標(biāo)識(shí),汽車(chē)可以用號(hào)牌來(lái)標(biāo)識(shí),網(wǎng)卡可以用MAC地址來(lái)標(biāo)識(shí),而人也可以用身份證號(hào)來(lái)標(biāo)識(shí),那么在軟件世界,面對(duì)不同的國(guó)家、不同的廠商以及他們所開(kāi)發(fā)出來(lái)的不同的組件、不同的接口,我們?cè)趺磥?lái)標(biāo)識(shí)呢?我們是用一個(gè)GUID結(jié)構(gòu)來(lái)標(biāo)識(shí)不同的對(duì)象、組件及接口的,GUID是英文globally unique identifier(全球唯一標(biāo)識(shí)符)的首字母縮寫(xiě),它是微軟使用的一個(gè)術(shù)語(yǔ),通過(guò)特定的算法,它可以給某一個(gè)實(shí)體創(chuàng)建一個(gè)唯一的標(biāo)識(shí),并且此標(biāo)識(shí)符是全球唯一的。

一個(gè)GUID共有128位長(zhǎng)(16字節(jié)),形如XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX。其中每個(gè)X是0-9或A-F范圍內(nèi)的一個(gè)十六進(jìn)制的數(shù)字。根據(jù)定義,GUID在時(shí)間和空間上都是唯一的。為保證空間唯一性,每一個(gè)GUID需要一個(gè)對(duì)于生成它的計(jì)算機(jī)來(lái)說(shuō)是單一的48位值。這個(gè)值一般就是機(jī)器所裝網(wǎng)卡的地址。使用這個(gè)值可以保證不同的機(jī)器上所生成的GUID值是不相同的。為保證時(shí)間上的唯一性,每一個(gè)GUID值具有一個(gè)60位的時(shí)間戳。這個(gè)時(shí)間戳表示自1852年10月15日00:00:00.00以來(lái)以100納秒為間隔的記數(shù)值。根據(jù)目前的算法,可保證到公元3400年GUID值仍然是唯一的。

GUID的使用非常廣泛,我們平時(shí)經(jīng)常看到,如注冊(cè)表、類及接口標(biāo)識(shí)、數(shù)據(jù)庫(kù)、以及自動(dòng)生成的機(jī)器名、目錄名等,你可以打開(kāi)你的系統(tǒng)盤(pán)下的\WINDOWS\Installer目錄,可以看到很多類似{0A869A65-8C94-4F7C-A5C7-972D3C8CED9E}的文件夾,這就是系統(tǒng)自動(dòng)生成的目錄名。至于注冊(cè)表中更是到處都是它的影子。

咦, 圖片找不到了耶!

當(dāng)我們?yōu)g覽網(wǎng)頁(yè)時(shí),控件是如何下載并安裝到我們的計(jì)算機(jī)上的?為了弄清楚這個(gè)問(wèn)題,先來(lái)看下面的一段網(wǎng)頁(yè)代碼。

<object id="safeSubmit1"
classid="CLSID:8D9E0B29-563C-4226-86C1-5FF2AE77E1D2"
codebase="/icbc/newperbank/AxSafeControls.cab#version=1,0,0,6"
style="HEIGHT: 0px; WIDTH: 0px" VIEWASTEXT>
</object>

這段代碼是我行個(gè)人網(wǎng)銀登錄頁(yè)面中的一部分,object元素表示將向網(wǎng)頁(yè)文件中插入一個(gè)對(duì)象,classid屬性是該對(duì)象的類標(biāo)識(shí),它的值形如"CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",表明這是一個(gè)ActiveX控件。codebase屬性是該控件的URL地址,它指向一個(gè)cab文件,這個(gè)文件是控件開(kāi)發(fā)商打包發(fā)行的,里面是控件的執(zhí)行文件,有.dll文件、.ocx文件、.exe文件等,為了能夠自動(dòng)安裝和注冊(cè)控件,一般還有INF文件來(lái)記錄相關(guān)的一些安裝信息。"1,0,0,6"是服務(wù)器上該控件的版本號(hào)。系統(tǒng)會(huì)根據(jù)classid先到注冊(cè)表中去查詢,查詢?cè)摽丶陌惭b及版本信息,查詢路徑是"HKEY_CLASSES_ROOT\CLSID\{8D9E0B29-563C-4226-86C1-5FF2AE77E1D2}\",如果鍵值不存在,則控件需要新安裝,如果鍵值存在但版本號(hào)小于服務(wù)器上的版本號(hào),則會(huì)更新控件。

以上面的例子說(shuō)明,當(dāng)瀏覽器解析出object元素時(shí),IE會(huì)按照以下流程進(jìn)行處理:

  1. 通過(guò)URL鏈接下載必要的文件(.cab、.inf或者.exe);
  2. 執(zhí)行WinVerifyTrust函數(shù)對(duì)下載文件進(jìn)行驗(yàn)證,確保文件是安全的;
  3. 完成所有COM組件的自注冊(cè),這是調(diào)用組件執(zhí)行文件中的DllRegisterServer函數(shù)來(lái)完成的;
  4. 向注冊(cè)表中添加注冊(cè)信息;
  5. 執(zhí)行函數(shù)CoGetClassObjectFromURL,返回類廠接口指針;
  6. 執(zhí)行函數(shù)CoCreateInstance,創(chuàng)建組件對(duì)象實(shí)例。

 

好了,到這里,一個(gè)組件實(shí)例就生成了。這個(gè)過(guò)程我寫(xiě)得比較簡(jiǎn)單,大家如果有興趣,可以看些軟件開(kāi)發(fā)類的書(shū)籍,大多數(shù)人只要清楚大概的流程就行了。

控件安裝前的IE瀏覽器設(shè)置

為了能夠順利下載和安裝ActiveX控件,我們需要對(duì)IE瀏覽器做必要的設(shè)置,特別是安全級(jí)別,安全級(jí)太高,很多控件都不可能正常下載,即使下載了也無(wú)法安裝,安全級(jí)太低,又容易引起很多安全問(wèn)題。那怎樣設(shè)置才合理呢,我的建議是添加信任站點(diǎn),將一些銀行網(wǎng)站、支付寶等加入信任站點(diǎn),然后將信任站點(diǎn)的安全級(jí)別設(shè)為"低",把控件的有關(guān)選項(xiàng)全部"啟用",而Internet域的安全級(jí)別可設(shè)置得高一點(diǎn),這樣,我們就既可以有針對(duì)性的安裝需要的控件,又可以防止一些惡意控件帶來(lái)的安全問(wèn)題。具體地設(shè)置步驟,大家可以參考這里

控件的安裝

一般來(lái)說(shuō),只要IE設(shè)置正確,那么控件會(huì)自動(dòng)下載并安裝,除非你的防火墻和殺毒軟件等對(duì)它進(jìn)行了攔截,現(xiàn)在大多數(shù)的病毒和木馬是在我們?yōu)g覽網(wǎng)頁(yè)時(shí)下載和傳播的,殺毒軟件對(duì)控件防范還是很?chē)?yán)密的,如果總是安裝不成功,可能得考慮將殺毒軟件和防火墻關(guān)閉了。關(guān)于瀏覽網(wǎng)頁(yè)時(shí)安裝控件的操作過(guò)程,大家可以參考一下在瀏覽網(wǎng)頁(yè)時(shí)如何安裝控件。

控件的注冊(cè)

對(duì)于應(yīng)用軟件來(lái)說(shuō),一般都有一個(gè)安裝程序,在用戶執(zhí)行安裝程序時(shí),ActiveX控件將自動(dòng)在用戶機(jī)器上安裝并注冊(cè)。

對(duì)于IE來(lái)說(shuō),在安裝控件的時(shí)候,它也會(huì)自動(dòng)地進(jìn)行注冊(cè)。

對(duì)于從網(wǎng)上下載的一些控件,要想使用它們,得手工注冊(cè)后方可使用,還有一些控件,由于注冊(cè)信息遭到破壞,無(wú)法正常使用時(shí),我們也需要手工注冊(cè)。這個(gè)過(guò)程可以通過(guò)執(zhí)行Regsvr32.exe文件來(lái)完成。

Regsvr32.exe位于\Windows\System目錄(Windows Me/Windows 98/Windows 95)或者\Windows\System32目錄(Windows NT/Windows XP/Windows Vista),是32位系統(tǒng)下使用的DLL注冊(cè)和反注冊(cè)工具,使用它必須通過(guò)命令行的方式使用。它的使用語(yǔ)法如下:

Regsvr32 [/u] [/n] [/i[:cmdline]] dllname
/u - 反注冊(cè)DLL文件。
/i - 調(diào)用DllInstall時(shí)將它傳遞到可選的[cmdline];在與/u共同使用時(shí),
它卸載DLL文件。
/n - 不調(diào)用DllRegisterServer,它必須與/i連用。
/s - 安靜模式,即在注冊(cè)/反注冊(cè)時(shí)不顯示結(jié)果提示框。(Windows XP和
Windows Vista中加入)
dllname - 指定要注冊(cè)的DLL文件名。

輸入DLL文件名時(shí),如果是非系統(tǒng)文件,必須使用文件絕對(duì)路徑,文件路徑中不包含中文,否則很可能導(dǎo)致處理失敗。如果regsvr32不能正常執(zhí)行,很可能系統(tǒng)文件遭到破壞,因?yàn)槭褂胷egsvr32.exe時(shí)會(huì)調(diào)用Kernel32.dll、User32.dll和Ole32.dll三個(gè)文件,在DOS模式或其它系統(tǒng)替換正常文件即可解決。

咦, 圖片找不到了耶!

控件的禁用

有時(shí)我們根據(jù)需要,不希望某些控件運(yùn)行,這時(shí)我們就需要對(duì)相關(guān)控件進(jìn)行禁用,禁用控件很簡(jiǎn)單,可以在IE中設(shè)置,也可以直接在注冊(cè)表中設(shè)置。

在IE中禁用控件,打開(kāi)Internet選項(xiàng),單擊程序選項(xiàng)卡,單擊管理加載項(xiàng),這里列出了IE中加載的所有控件,我們選中需要禁用的控件,選擇禁用就行了。

咦, 圖片找不到了耶!

咦, 圖片找不到了耶!

我們將網(wǎng)銀輸入控件禁用后,大家可以看一下結(jié)果。

咦, 圖片找不到了耶!

除了在IE中設(shè)置外,我們也可以在注冊(cè)表中進(jìn)行控件的禁用。打開(kāi)注冊(cè)表編輯器,進(jìn)入路徑"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Ext\Settings\",下面已經(jīng)有一些控件了,我們可以試著增加一條,點(diǎn)擊Settings,新建一個(gè)項(xiàng),就輸入"{73E4740C-08EB-4133-896B-8D0A7C9EE3CD}"吧,在該鍵值下,我們新建兩個(gè)值,一個(gè)是"Flags",類型是"DWORD",值為"1",一個(gè)是"Version",類型是"字符串",值為"*"。好了,大家再登錄一下網(wǎng)銀試試看。

咦, 圖片找不到了耶!

咦, 圖片找不到了耶!

咦, 圖片找不到了耶!

有時(shí)我們一打開(kāi)某個(gè)網(wǎng)頁(yè),IE就提示"非法關(guān)閉",這很可能是因?yàn)樵摼W(wǎng)頁(yè)加載的控件被破壞,這時(shí),我們可以將已加載的控件逐個(gè)禁用,來(lái)找到出現(xiàn)問(wèn)題的控件,然后將之刪除或者重新安裝,解決IE的故障。

控件的免疫

不知你有沒(méi)有遇到過(guò)這種事,無(wú)論你把控件安裝程序執(zhí)行多少遍,控件始終不起作用,網(wǎng)銀也用不了,這時(shí)很多人都會(huì)選擇重裝系統(tǒng)。其實(shí),這個(gè)問(wèn)題很好解決,原因也很簡(jiǎn)單,控件可能被殺毒軟件給免疫了,我們只需要解除免疫,就可以解決這個(gè)問(wèn)題??丶庖吆涂丶檬遣灰粯拥模丶煤?,我們還可以在IE瀏覽器中看到這個(gè)控件,并且可以啟用它,然而控件一旦被免疫,那么IE瀏覽器就對(duì)它完全視而不見(jiàn),根本不會(huì)去理它。

咦, 圖片找不到了耶!

不管控件是被禁用,還是被免疫,現(xiàn)象都是一樣的。

咦, 圖片找不到了耶!

那么怎樣才能對(duì)控件實(shí)行免疫呢?方法跟控件禁用差不多,我們還是要先弄清楚目標(biāo)控件的CLSID,這是一個(gè)GUID值,千萬(wàn)不能搞錯(cuò)了,最穩(wěn)妥的方法當(dāng)然是咨詢控件開(kāi)發(fā)商,可這不太現(xiàn)實(shí),那我們只好自已找了,一般而言,我們可以通過(guò)搜索注冊(cè)表中HKEY_CLASSES_ROOT\CLSID路徑下的ProgID鍵值來(lái)確定控件的CLSID。有了這個(gè)值就好辦了,比如我們要免疫網(wǎng)銀輸入控件,打開(kāi)注冊(cè)表編輯器,進(jìn)入路徑"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility",在該鍵值下增加一項(xiàng),輸入"{73E4740C-08EB-4133-896B-8D0A7C9EE3CD}",在該項(xiàng)下,我們新建一個(gè)DWORD類型的值,名字叫"Compatibility Flags",值為"0x00000400"(十進(jìn)制為1024)。這樣,我們就將網(wǎng)銀輸入控件給免疫了。免疫后,只要不啟用IE中的"對(duì)未標(biāo)記為安全的ActiveX控件初始化并執(zhí)行腳本"選項(xiàng),IE就不會(huì)調(diào)用該控件。

咦, 圖片找不到了耶!

將"Compatibility Flags"的值修改為"0",哈哈,該控件就解除免疫了。為了安全起見(jiàn),除非你確實(shí)沒(méi)有辦法了,可以按照這個(gè)方法來(lái)分析解決控件安裝的問(wèn)題,對(duì)于新手而言,最好還是使用相關(guān)工具。

控件的卸載和刪除

控件如果不再使用了,我們需要將其從系統(tǒng)中刪除,大家可以按照以下流程來(lái)完成刪除工作。

  1. 單擊開(kāi)始,指向設(shè)置,單擊控制面板,雙擊添加或刪除程序,然后單擊更改或刪除程序選項(xiàng)卡。
  2. 如果要?jiǎng)h除的ActiveX控件出現(xiàn)在安裝的程序列表中,請(qǐng)單擊該控件,單擊更改/刪除,然后按照屏幕上的說(shuō)明操作。如果ActiveX控件沒(méi)有出現(xiàn)在安裝的程序列表中,則繼續(xù)執(zhí)行下一步。

    咦, 圖片找不到了耶!

  3. 在資源管理器中,雙擊"Windows\Downloaded Program Files"文件夾或 "Winnt\Downloaded Program Files"文件夾,右鍵單擊想要?jiǎng)h除的ActiveX控件,然后單擊刪除。
  4. 在系統(tǒng)提示是否刪除該控件后,單擊。

 

咦, 圖片找不到了耶!

如果你要嘗試刪除的ActiveX控件當(dāng)前在內(nèi)存中由IE或"活動(dòng)桌面"組件加載,會(huì)顯示"共享沖突"的錯(cuò)誤信息,要解決此錯(cuò)誤消息,可以按照下列步驟操作:

  1. 關(guān)閉所有打開(kāi)的IE窗口。
  2. 禁用"活動(dòng)桌面"。
  3. 重新啟動(dòng)Windows。
  4. 按前文介紹的步驟刪除ActiveX控件。

 

控件的安全性

ActiveX控件盡管增加了我們上網(wǎng)沖浪時(shí)的樂(lè)趣,與此同時(shí),它也給我們埋下了巨大的安全隱患,它是一種極其危險(xiǎn)的提供功能的方法(目前正在被MS逐漸冷落),因?yàn)樗且环N組建對(duì)象模型(COM)的對(duì)象,只要電腦的用戶可以完成的任務(wù),它都可以完成。比如它可以存取注冊(cè)表,可以隨意訪問(wèn)本地文件系統(tǒng)等等。一個(gè)網(wǎng)頁(yè)上面的控件一般有2種不安全的狀態(tài),一種是腳本的不安全,一種是初始化的不安全。當(dāng)用戶將一個(gè)壓縮解壓縮空間指向一個(gè)遠(yuǎn)程被壓縮的包含特洛伊木馬的系統(tǒng)文件并且需要控件來(lái)解壓縮這個(gè)文件時(shí),系統(tǒng)安全會(huì)被打破。這個(gè)狀態(tài)就是初始化的不安全。從代碼的角度來(lái)講,如果控件從IPersist派生,也就是說(shuō)控件實(shí)現(xiàn)了永久性,那么就會(huì)觸發(fā)unsafe for initializing。而在腳本程序安全執(zhí)行以前,一個(gè)控件依賴于特定的系統(tǒng)設(shè)置,那么在允許這段代碼運(yùn)行之前控件的開(kāi)發(fā)人員需要提供一些必要的代碼。這意味著如果控件從IDispatch派生,也就是說(shuō)控件支持腳本,那么就會(huì)觸發(fā)unsafe for scripting。

從用戶下載一個(gè)ActiveX控件開(kāi)始,這個(gè)控件就很容易被攻擊,因?yàn)榫W(wǎng)絡(luò)上任何網(wǎng)絡(luò)程序都可以使用它,無(wú)論是出于友好的目的還是惡意的目的。因此IE瀏覽器總是試圖彈出一個(gè)對(duì)話框來(lái)告訴你,這個(gè)控件可能是不安全的。這幾乎總是一個(gè)很好的預(yù)防網(wǎng)絡(luò)攻擊的好方法,但是對(duì)于那些我們認(rèn)為總是安全的控件,我們?nèi)匀灰邮苓@種IE產(chǎn)生的干擾,這就使人厭煩了。為了解決這個(gè)問(wèn)題,開(kāi)發(fā)商可以采用軟件簽名技術(shù)。但代碼簽名證書(shū)價(jià)格不菲,不是一般人用得了的,同時(shí),即使ActiveX控件具有有效的數(shù)字簽名,在計(jì)算機(jī)上安裝這些ActiveX控件時(shí)也應(yīng)該謹(jǐn)慎。關(guān)于控件的安全性,涉及很多技術(shù)問(wèn)題,這里就不多討論了,有興趣的朋友可以參考一下文章《為什么基于ActiveX的安全控件一定是不安全的》。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多