跳至內容

ActiveX

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
ActiveX
原作者Microsoft
開發者Microsoft
首次發布1996年,​28年前​(1996
網站microsoft.com/com/tech/activex.asp

ActiveX在廣義上是指微軟公司的整個COM架構,但是現在通常用來稱呼基於標準COM介面來實現物件連結與嵌入(OLE)的ActiveX控制項[1]後者是指從VBX發展而來的,面向微軟的Internet Explorer技術而設計的以OCX為副檔名的OLE控制項。通過定義容器和組件之間的介面規範,如果編寫了一個遵循規範的控制項,那麼可以很方便地在多種容器中使用而不用修改控制項的程式碼。同樣,通過實現標準介面呼叫,一個遵循規範的容器可以很容易地嵌入任何遵循規範的控制項。由於OLE在ActiveX控制項中的套用的普及,現在OLE技術中只有少數獨立於ActiveX技術,例如複合文件

簡介

一些瀏覽器,例如Internet ExplorerGoogle Chrome網景瀏覽器等等現在或曾經都在不同程度上支援ActiveX控制項。這允許網頁通過指令碼和控制項互動產生更加豐富的效果,同時也帶來一些安全性的問題。Internet Explorer和一些其他應用程式同時支援ActiveX Documents介面規範,允許在一個應用程式中嵌入另一個支援這個規範的應用程式。很多套用軟體,例如微軟的Microsoft Office系列和AdobeAcrobat Reader都實現了這個規範。

伺服器端ActiveX組件通常是指執行在服務處理程序中的組件。一個典型套用是在IIS中執行的ASP指令碼建立的ActiveX Data Objects,也稱ADO。 市場上有很多開發工具支援開發和使用ActiveX控制項。

ActiveX Documents泛指一般採用ActiveX技術作為介面所使用的檔案,最早始於2000年左右,當時由於網際網路的興起,當時的軟體巨擘微軟為打敗當時崛起的瀏覽器Netscape所使出策略,當時市場處於弱勢的IE想要將當時微軟市佔率最高的office檔案應用於IE上,好打敗Netscape,故使出讓IE瀏覽器不需將Office的檔案轉換成標準的HTML網頁也能讀取甚至修改編輯,因此2000後的IE均提供直接開啟ActiveX Documents(如.doc.ppt...等副檔名)之檔案,這項策略果然在數年後,將Netscape完全逐出市場。而由於Office的檔案只有微軟能解讀,因此後來的瀏覽器如Google的Chrome就不能直接打開如PPT或DOC等檔案,不過隨著雲端運算的興起,相信這情況將會改變。

運作原理

使用ActiveX元件
  1. 每一個ActiveX元件都各自用一個唯一的GUID編碼在登錄資訊的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\[2]HKEY_CLASSES_ROOT\CLSID\之處註冊其DLL檔案路徑。多個ActiveX元件可以放在同一個dll檔案內,但是所有開放使用的ActiveX元件都必須以各自的GUID編號登記在登錄資訊裡。
  2. 當該ActiveX元件的dll檔,使用LoadLibrary[3]或LoadLibraryEx[4]的API載入後,以GetProcAddress[5]取得DllGetClassObject[6]這個定義在該dll檔裡的函式的進入點。
  3. 接著呼叫DllGetClassObject,以取得IClassFactory[7]的指標。
  4. 再經由IClassFactory去CreateInstance[8],進行該ActiveX元件初始化的後續操作。

安全性

由於Microsoft在Windows內建許多ActiveX,因此導致一些惡意的網站曾經利用這些ActiveX進行自動安裝病毒後門。 例如:

  • Scripting.FileSystemObject,這個ActiveX可操作新增或修改檔案內容。[9]
  • WbemScripting.SWbemLocator,這個ActiveX可操作WMI,進而存取登錄資訊。[10]
  • WScript.Shell,這個ActiveX可從瀏覽器之中直接執行外部的執行檔。[11]

因此,Microsoft陸續在IE上增加2種封鎖ActiveX執行的方法。先是在2007年加上ActiveX相容性旗標(Killbit)功能,經由ActiveX元件開發廠商的向Microsoft回報後,由Windows Update發佈KillBit的更新。而後又在IE 9以後的版本加上ActiveX Filtering功能,讓IE的瀏覽者能夠自訂是否封鎖特定的ActiveX元件。[12]

淘汰

在2015年7月29日發行的Windows 10,會以不支援ActiveX的Microsoft Edge瀏覽器[13],取代使用多年的Internet Explorer做為Windows預設瀏覽器。但為相容性需要,Windows 10仍內建Internet Explorer 11供使用者選用。

參考資料

  1. ^ Introduction to ActiveX Controls. [2013-08-15]. (原始內容存檔於2013-09-27). 
  2. ^ CLSID Key. [2013-08-16]. (原始內容存檔於2013-09-21). 
  3. ^ LoadLibrary function. [2013-08-16]. (原始內容存檔於2016-06-14). 
  4. ^ LoadLibraryEx function. [2013-08-16]. (原始內容存檔於2013-07-22). 
  5. ^ GetProcAddress function. [2013-08-16]. (原始內容存檔於2013-07-31). 
  6. ^ DllGetClassObject entry point. [2013-08-16]. (原始內容存檔於2013-10-18). 
  7. ^ IClassFactory interface. [2013-08-16]. (原始內容存檔於2019-09-19). 
  8. ^ IClassFactory::CreateInstance method. [2013-08-16]. (原始內容存檔於2019-09-19). 
  9. ^ Programming the FileSystemObject. [2013-08-15]. (原始內容存檔於2013-08-07). 
  10. ^ SWbemLocator object. [2013-08-15]. (原始內容存檔於2013-05-11). 
  11. ^ Run Method (Windows Script Host). [2013-08-15]. (原始內容存檔於2013-08-07). 
  12. ^ How to use Tracking Protection and ActiveX Filtering in Internet Explorer 9. [2013-08-15]. (原始內容存檔於2013-08-15). 
  13. ^ Gregg Keizer. Microsoft nixes ActiveX add-on technology in new Edge browser. www.computerworld.com. 10 May 2015 [2016-04-23]. (原始內容存檔於2015-05-14). 

相關