IE瀏覽器中如何安全地調用本地可執行程序

一般,瀏覽器中是禁止運行本地可執行程序的。但不容許瀏覽器運行,客觀上限制了瀏覽器的用途和做用。要解決此問題,必須安全擴展瀏覽器的功能。擴充瀏覽器的功能,一是採用控件或插件技術,二是採用小程序技術。市場上的主流瀏覽器,如IR和Netscape均支持這兩種技術。控件或插件多用VC、BC++、VB和Delph等語言開發。小程序通常是由,iava語言來編程的。衆所周知,java語言經過「砂箱」機制禁止訪問本地文件系統,更談不上調用本地程序運行,要經過瀏覽器調用本地可執行程序,需使用控件或插件技術。1、安全調用本地程序的要求瀏覽器中調用本地程序起碼要解決兩個問題,一是安全性,二是位置透明性。 因爲瀏覽器運行在客戶端,安全性很是重要,若是安全性不能解決,運行在瀏覽器中的惡意控件輕則可能傳播病毒、破壞本地文件系統,重則形成計算機系統癱瘓和信息泄密。瀏覽器中均有默認的安全級別,IE瀏覽器默認的是中級安全級別。在此安全級別下要讓瀏覽器啓動運行本地可執行程序.一早要杷榨件標記爲可安全執行的。二是要對控件作數字簽名。把控件標記爲可安全執行的含義是要在控件中實現必需的Iknown接口外,還要實現「對象安全」接口,這樣控件才能與瀏覽器協調一致的工做。對控件作數字簽名就是採用非對稱加密算法將散列函數處理後的控件散列值作加密,以保證控件的完整性和不能否認性。若是對控件不作安全標記,也不進行數字簽名,要想在本地運行可執行程序,就必須下降瀏覽器的安全性。瀏覽器的安全性下降後,對於內部網絡彷佛問題不是很大,但要在internet上,那就給病毒、黑客人侵打開了方便之門。除非有充足的理由,通常狀況下,決不可隨便下降瀏覽器的安全性。 所謂位置透明性就是運行可執行程序與位置無關,不管其放在何處都能正常運行。位置透明性對寫過控件的人並不陌生,Windows中無處不在,控件無一例外都是位置透明的。其解決辦法是使用一個128位的clsid來惟一標識。clsid在HTML頁面中和系統的註冊表中隨處可見。在使用控件時,不管是手工仍是系統自動註冊都是在註冊表中創建clsid和控件路徑的映射關係。經過這種映射關係自動解決了位置透明性。 咱們也可經過註冊表解決運行程序的位置透明性問題。這裏的映射關係可創建成應用程序名和可運行程序路徑之間的映射關係。用應用程序名來惟一地標識可執行程序,其至關於控件的cMd,用安裝程序來安裝可執行程序,至關於控件註冊。Windows中經過安裝程序安裝的可執行程序,其鍵值均在HKEY_LOCAlMACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\中,用流行的的InstallShield安裝軟件不難實現。調用本地可執行程序時在註冊表中查找其安裝路徑,結合應用程序名和註冊表鍵值中記錄的執行程序路徑,便可找到本地可執行程序,原理與控件的動態加載運行徹底一致。2、實現機理 用支持控件的開發工具,如VC、VB等開發一個調用本地可執行程序的控件,可命名爲Cyxm—LocalCallCtrl,除了實現必需的Iknown接口外,還要實現IObjectSafety接口,即前面提到的「安全對象」接口。再實現一個調用本地可執行程序的函數,如localCall(),開發完成後對控件作數字簽名就可以使用了。1.IObjectSafety接口該接口的核心是如下的兩個函數:STDMETHODIMP CYxmLocalCallCtrl::XObjectSafety::
GetInterfaceSafetyOptions(
REFIID riid,
DWORD——RPC—FAR*pdwSupportedOptions,
DWORD——RPC—FAR*pdwEnabledOptions
),
STDMETHODIMP CYxmLocalCallCtrl::XObjectSafety::Set—
InterfaceSafetyOptions(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
) 這兩個函數只是用對象嵌套的方式實現的一個樣例,若是用對象聚合的方式實現它,可能不是這個樣子,但接口參數和函數名是不會發生變化的。對這兩個函數的編碼並不複雜,若是你不須要作什麼,其函數體能夠不用寫任何代碼,簡單地返回就能夠了。之因此寫這兩個函數是瀏覽器的要求,其加載控件時,要調用這兩個函數,也就是瀏覽器要求你認可你寫的控件是安全地。這是前面所述標記爲安全腳本的技術含義。其實IE瀏覽器支持的接口不少,如IDispatch、IHTML-Document二、IHTMLDocument、IHTMLCollection、I-HTMLFormElement、IHTMLInputTextElement等等。擴充其功能都是經過實現它們完成的。若有些文章中介紹的經過IE瀏覽器竊取網頁中的用戶名和密碼也是利用這種原理。2.數字簽名 對控件作數字簽名首先要製做數字證書數字證書可從數字認證中心申請獲得。若是不想付費,而本身的網絡又無數字認證中心,可用VC提供的工具來完成。具體作法是,用MakeCert.Exe製做數字證書,用CabArc.Exe製做壓縮包,用signcode.exe進行數字簽名。完成數字簽名後,將控件部署到web中,便可使用。3.使用控件 若是想經過瀏覽器調用word.exe字處理軟件,在頁面中插入以下的代碼和腳本程序,便可啓動。不要忘了容錯處理,即系統中未安裝可執行程序的狀況下,也要保證瀏覽器流暢運行。
相關文章
相關標籤/搜索