基于中間件插件框架的插件安全控制方法及客戶端的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種中間件設(shè)計(jì)系統(tǒng)及方法,尤其涉及一種基于中間件插件框架的插 件安全控制方法及客戶端。
【背景技術(shù)】
[0002] 傳統(tǒng)的插件開發(fā)需要大量技術(shù)人員來完成,且開發(fā)的插件與中間件(如iPanel中 間件)的禪合性太高,安全性偏低,無法通過插件對相應(yīng)底層設(shè)備進(jìn)行控制。同時(shí),現(xiàn)有的 中間件無法對插件狀態(tài)和資源使用情況進(jìn)行控制。
[0003] 從現(xiàn)在發(fā)展趨勢看,中間件的功能擴(kuò)展已經(jīng)非常復(fù)雜,維護(hù)起來需要大量的資源, 而中間件本身特有內(nèi)容的維護(hù)時(shí)間卻相對較少,嚴(yán)重影響產(chǎn)品各方面質(zhì)量。同時(shí),現(xiàn)有的中 間件缺少必要的靈活性,功能擴(kuò)展性較差,給開發(fā)及維護(hù)人員帶來很大負(fù)擔(dān)。
[0004] 特別地,由于業(yè)務(wù)需要,中間件需要對外擴(kuò)展一些功能,而過多的對外開放也對中 間件自身安全提出了更高的要求。如果客戶端(如機(jī)頂盒)沒有類似于防火墻的安全結(jié)構(gòu), 外來程序(如第H方插件)的不確定性將極大威脅到中間件的安全運(yùn)行。
【發(fā)明內(nèi)容】
[0005] 鑒于W上內(nèi)容,有必要提供一種基于中間件插件框架的插件安全控制方法及客戶 端,其可通過創(chuàng)建的中間件插件框架,快速開發(fā)出自定義的功能插件,并運(yùn)行于中間件上, 利用中間件控制插件安全。
[0006] 一種基于中間件插件框架的插件安全控制方法,該方法包括:設(shè)置客戶端中的中 間件插件框架,該中間件插件框架包括中間件單元和插件單元,所述中間件單元包括插件 管理器、Web引擎、及應(yīng)用程序接口API模塊,所述插件單元包括一個(gè)插件庫和一個(gè)插件框 架模塊,所述插件框架模塊包括插件接口和框架接口;當(dāng)客戶端從服務(wù)端下載一個(gè)插件壓 縮包時(shí),所述插件管理器啟動對該插件壓縮包的校驗(yàn)流程,該插件壓縮包包括加密后的插 件文件及插件描述信息,所述插件描述信息包括加密后的隨機(jī)密鑰、加密后的配置參數(shù)、及 加密后的數(shù)字簽名;插件管理器利用客戶端的公鑰對加密后的隨機(jī)密鑰進(jìn)行解密,得到解 密后的隨機(jī)密鑰;插件管理器利用該隨機(jī)密鑰對該插件壓縮包進(jìn)行解密,得到解密后的插 件文件;插件管理器利用預(yù)設(shè)的摘要生成算法對該解密后的插件文件進(jìn)行計(jì)算,得到一個(gè) 新的摘要內(nèi)容;插件管理器利用客戶端的公鑰對上述加密后的數(shù)字簽名進(jìn)行解密,得到解 密后的插件文件的初始摘要內(nèi)容;如果該新的摘要內(nèi)容與初始摘要內(nèi)容一致,則插件管理 器判定校驗(yàn)通過,控制該插件文件進(jìn)行安裝;如果該新的摘要內(nèi)容與初始摘要內(nèi)容不一致, 則插件管理器判定校驗(yàn)失敗,阻止該插件文件的安裝。
[0007] -種基于中間件插件框架的客戶端,該客戶端包括:中間件插件框架,該中間件插 件框架包括中間件單元和插件單元,所述中間件單元包括插件管理器、Web引擎、及應(yīng)用程 序接口API模塊,所述插件單元包括一個(gè)插件庫和一個(gè)插件框架模塊,所述插件框架模塊 包括插件接口和框架接口;所述插件管理器用于,當(dāng)客戶端從服務(wù)端下載一個(gè)插件壓縮包 時(shí),啟動對該插件壓縮包的校驗(yàn)流程,該插件壓縮包包括加密后的插件文件及插件描述信 息,所述插件描述信息包括加密后的隨機(jī)密鑰、加密后的配置參數(shù)、及加密后的數(shù)字簽名; 所述插件管理器還用于,利用客戶端的公鑰對加密后的隨機(jī)密鑰進(jìn)行解密,得到解密后的 隨機(jī)密鑰;所述插件管理器還用于,利用該隨機(jī)密鑰對該插件壓縮包進(jìn)行解密,得到解密后 的插件文件;所述插件管理器還用于,利用預(yù)設(shè)的摘要生成算法對該解密后的插件文件進(jìn) 行計(jì)算,得到一個(gè)新的摘要內(nèi)容;所述插件管理器還用于,利用客戶端的公鑰對上述加密后 的數(shù)字簽名進(jìn)行解密,得到解密后的插件文件的初始摘要內(nèi)容;所述插件管理器還用于,女口 果該新的摘要內(nèi)容與初始摘要內(nèi)容一致,則判定校驗(yàn)通過,控制該插件文件進(jìn)行安裝;所述 插件管理器還用于,如果該新的摘要內(nèi)容與初始摘要內(nèi)容不一致,則判定校驗(yàn)失敗,阻止該 插件文件的安裝。
[0008] 相較于現(xiàn)有技術(shù),上述基于中間件插件框架的插件安全控制方法及客戶端,通過 創(chuàng)建的中間件插件框架,快速開發(fā)出自定義的功能插件,并運(yùn)行于中間件上,利用中間件控 制插件安全,降低第H方插件隊(duì)中間件帶來的運(yùn)行風(fēng)險(xiǎn)。
[0009] 本發(fā)明滿足快速增長的用戶個(gè)性化業(yè)務(wù)需求,第H方開發(fā)者可W根據(jù)中間件插件 框架提供的插件接口快速開發(fā)出個(gè)性化的插件應(yīng)用程序,然后由中間件進(jìn)行控制運(yùn)行,從 而降低了第H方插件功能開發(fā)的難度,提高了中間件的可擴(kuò)展性,減少了中間件技術(shù)人員 與第H方插件開發(fā)者在溝通交流確認(rèn)等繁瑣事務(wù)上的時(shí)間。
【附圖說明】
[0010] 圖1是本發(fā)明中間件插件框架設(shè)計(jì)系統(tǒng)的主體示意圖。
[0011] 圖2是本發(fā)明中間件插件框架設(shè)計(jì)系統(tǒng)的應(yīng)用環(huán)境示意圖。
[0012] 圖3是本發(fā)明中間件插件框架設(shè)計(jì)方法的主體流程圖。
[001引圖4是插件單元中的插件框架模塊與中間件單元中的API模塊的關(guān)聯(lián)圖。
[0014] 圖5是本發(fā)明基于中間件插件框架的插件狀態(tài)控制方法的主體流程圖。
[0015] 圖6是插件包制作流程示意圖。
[0016] 圖7是對第一插件列表和第二插件列表中的字段說明。
[0017] 圖8是本發(fā)明基于中間件插件框架的插件內(nèi)存資源控制方法的主體流程圖。
[0018] 圖9是本發(fā)明基于中間件插件框架的插件文檔資源控制方法的主體流程圖。
[0019] 圖10是本發(fā)明基于中間件插件框架的插件Socket資源控制方法的主體流程圖。
[0020] 圖11是本發(fā)明基于中間件插件框架的插件安全控制方法中插件安全發(fā)布流程 圖。
[0021] 圖12是本發(fā)明基于中間件插件框架的插件安全控制方法中插件下載校驗(yàn)流程 圖。
[0022] 圖13是本發(fā)明基于中間件插件框架的插件安全控制方法中插件運(yùn)行校驗(yàn)流程 圖。
【具體實(shí)施方式】
[0023] 如圖1所示,是本發(fā)明中間件插件框架設(shè)計(jì)系統(tǒng)的主體示意圖。在本發(fā)明中,所述 中間件插件框架設(shè)計(jì)系統(tǒng)20包括中間件單元21和插件單元22。其中,所述中間件單元21 包括插件管理器(PluginManager) 210、Web引擎(即網(wǎng)頁引擎)211、及API(Application ProgramInte計(jì)ace,應(yīng)用程序接口)模塊213。例如,所述中間件單元21可W為iPanel中 間件。
[0024]在本實(shí)施例中,所述Web引擎211為WebCore引擎,所述API模塊213包括多個(gè)中 間件基礎(chǔ)功能函數(shù),如Timer(時(shí)鐘)相關(guān)函數(shù)、Socket(套接字)處理函數(shù)、線程處理函數(shù)、 圖形圖像處理函數(shù)、文件操作函數(shù)、事件處理函數(shù)、私有化va腳本對象注冊函數(shù)、字體操作 函數(shù)、及繪圖(Graphics)相關(guān)函數(shù)等。
[00巧]所述插件單元22包括一個(gè)插件庫220和一個(gè)插件框架化rameWork)模塊221。所 述插件庫220包括一個(gè)或多個(gè)插件應(yīng)用程序(插件App,W下簡稱為"插件"),所述插件框 架模塊221進(jìn)一步包括插件接口 2210和框架接口 2212。
[0026] 所述框架接口 2212由中間件(如中間件單元21)實(shí)現(xiàn)供插件庫220中的插件調(diào) 用,達(dá)到插件單元22向中間件單元21的單向通信目的,插件單元22通過此框架接口 2212 獲取諸如;時(shí)鐘、線程、socket、graphics、文件管理等中間件單元21的系統(tǒng)資源,如內(nèi)存資 源,文檔資源(如文本、圖片、聲音、視頻等),及Socket資源等。所述插件接口 2210由插件 實(shí)現(xiàn)供中間件單元21調(diào)用,達(dá)到中間件單元21向插件單元22的單向通信目的,中間件單 元21通過插件接口 2210調(diào)用插件所實(shí)現(xiàn)的功能,如讀取插件處理數(shù)據(jù)等。
[0027] 在本實(shí)施例中,所述插件管理器210與插件單元22的插件接口 2210連接,用于控 制插件的校驗(yàn)、安裝(包括下載、加載等)和卸載等操作。所述Web引擎211與插件單元22 的框架接口2212連接,用于當(dāng)插件通過插件管理器210的校驗(yàn)后,啟動該插件。所述插件 接口 2210包括一個(gè)或多個(gè)API程序接口,所述框架接口 2212提供一個(gè)插件基礎(chǔ)框架,該插 件基礎(chǔ)框架可W是NP(Netscape,網(wǎng)景)插件框架,包括插件從加載到銷毀整個(gè)生命周期的 框架。
[002引一個(gè)插件基礎(chǔ)框架的例子如下:
[0029]
[0030]
[0031] 在上述插件基礎(chǔ)框架的例子中,其所定義的函數(shù)指針已基本包含一個(gè)插件所有可 執(zhí)行程序的應(yīng)有接口?;谏鲜霾寮A(chǔ)框架,可構(gòu)造一個(gè)或多個(gè)插件接口 2210(如API 程序接口)。
[0032] 根據(jù)上述插件基礎(chǔ)框架構(gòu)造的一個(gè)繪圖應(yīng)用程序接口的例子如下:
[003引 //插件創(chuàng)建時(shí)調(diào)化對應(yīng)在上面的newp中
[0034]PluginHandleplugin_create(void本npp,McSurfacecompat,int,int);
[0035] //插件銷毀時(shí)調(diào)用,對應(yīng)在上面的destroy中
[0036]voidplugin_destroy巧luginHandle);
[0037] //插件開始運(yùn)行時(shí)調(diào)用,對應(yīng)上面的setwindow
[0038]intplugin_run巧luginHandle);
[0039] //插件發(fā)生事件響應(yīng)時(shí)調(diào)用,對應(yīng)上面的event
[0040]intplugin_hand1e_event(PluginHandle,unsignedint,unsigned int,unsignedint);
[0041] //插件開始畫圖時(shí)調(diào)用,可在setwindow當(dāng)中開始
[0042]McSurfaceplugin-paint(PluginHandleme,intx,inty,intw,inth);
[0043] //設(shè)置頁面插件object標(biāo)簽的某一屬性值
[0044] // 如:〈objectclassid二"plugin:image"wicith二"400px"