中國信息通信研究院電信與信息服務(wù)咨詢中心 宗漢文
?
互聯(lián)網(wǎng)數(shù)據(jù)接口開發(fā)及應(yīng)用
中國信息通信研究院電信與信息服務(wù)咨詢中心宗漢文
【摘要】本人從事過很多項目的開發(fā),曾經(jīng)使用過VB語言,C+ 語言和C#語言,現(xiàn)如今數(shù)據(jù)接口的應(yīng)用范圍現(xiàn)在越來越寬廣,但是其安全性與效率也為人所擔心。本人在經(jīng)歷的項目中,總結(jié)了一些數(shù)據(jù)接口設(shè)計方面的心得。
【關(guān)鍵詞】數(shù)據(jù)接口;開發(fā);應(yīng)用
互聯(lián)網(wǎng)的普及,特別是移動互聯(lián)網(wǎng)的普及,使得眾多的企業(yè)和個人的信息交互更加頻繁。訂單信息、付款信息以及個人信息等私密或不私密的信息不斷的在互聯(lián)網(wǎng)以及移動終端進行交互。在這之間,數(shù)據(jù)的封裝與發(fā)送,數(shù)據(jù)的加密與解密,成為了重要的工作。而完成這些工作的,就是數(shù)據(jù)接口。相比于內(nèi)網(wǎng)的數(shù)據(jù)交互,互聯(lián)網(wǎng)的數(shù)據(jù)交互的要求更多,也更加復(fù)雜。下面我將為大家簡要介紹一下互聯(lián)網(wǎng)數(shù)據(jù)接口的使用與開發(fā)。
雖然接口的雙方都在網(wǎng)絡(luò)內(nèi)部,但是仍然不能排除接口的服務(wù)攻擊、惡意調(diào)用和非法調(diào)用等。所以在接口的調(diào)用與被調(diào)用時,必須考慮認證安全問題。在做數(shù)據(jù)的采集端,所有的調(diào)用用戶應(yīng)該具有唯一的用戶名和密碼,經(jīng)過必要的身份認證后,方可進行接口訪問。調(diào)用方在接到接口返回的認證成功的返回后,方可進行下一步操作。
數(shù)據(jù)的安全表現(xiàn)是如何保證數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中不會被截獲并被解析其中內(nèi)容從而引起信息泄露與如何保證數(shù)據(jù)在傳輸過程中的數(shù)據(jù)完整性兩個方面。
WebService采用XML數(shù)據(jù)格式來進行信息傳輸,所以要求采用對XML數(shù)據(jù)加密之后來傳輸。外部系統(tǒng)接口上有很多種類型的業(yè)務(wù),可以針對不同的業(yè)務(wù)類型分配不同的密鑰,也可以根據(jù)不同的企業(yè)分配不同的密鑰,可以按照需求進行選擇。密鑰的發(fā)布由系統(tǒng)服務(wù)方來發(fā)布,由客戶端根據(jù)情況進行針對性開發(fā)。
為了數(shù)據(jù)的完整性,必須采用數(shù)據(jù)簽名。利用XML的數(shù)字簽名對SOAP進行擴展,在SOAP的頭元素中定義簽名屬性來實現(xiàn)。
事務(wù)是系統(tǒng)中一組相關(guān)的任務(wù),作為獨立于其他任務(wù)的單元成功或失敗。要提保證不論系統(tǒng)崩潰或是發(fā)生其他無法預(yù)料的事件,更改都必須是永久有效的。即使只有一個步驟無法保證這一點,整個事務(wù)也將失敗,所有相關(guān)操作都將回滾。
外網(wǎng)系統(tǒng)和服務(wù)端系統(tǒng)是處于網(wǎng)絡(luò)上的兩個分布式接口,使用的是分布式事務(wù)。要啟用分布式事務(wù),可能需要通過網(wǎng)絡(luò)啟用MSDTC,以便在使用應(yīng)用了最新的ServiceBack的較新操作系統(tǒng),必須允許MSDTC服務(wù)使用網(wǎng)絡(luò)或打開MSDTC端口。
接口的服務(wù)端和客戶端的環(huán)境始終相同,對于該事務(wù)上下文是當前的。這樣的事務(wù)會造成性能的損失,因為可能需要繼承原來的,但是,這樣的事務(wù)確保了在數(shù)據(jù)庫操作時信息的完整性。
在接口設(shè)計之初就需要考慮性能問題。同時,在項目的開發(fā)過程要反復(fù)進行測試。接口上面的性能考慮主要從下面幾個方面來優(yōu)化:
1)使用一次連接,多次調(diào)用,優(yōu)化連接資源。
2)對于并行的接口調(diào)用使用異步的調(diào)用方式。
3)優(yōu)化線程池減少競爭。
4)考慮使用XML壓縮。
5)如果不需要返回,考慮使用單工通訊的方式。
6)適當?shù)脑O(shè)置(如果有代理)代理超時,頁面超時,WebService超時。
7)設(shè)計”大塊頭”的接口減少往返。
8)基于消息的編程而不是遠程過程調(diào)用(RPC)。
9)使用XML字串作為參數(shù)。
10) 盡量使用原始數(shù)據(jù)類型參數(shù)。
11) 避免在調(diào)用之間維護服務(wù)器狀態(tài)。
12) 考慮為復(fù)雜的WebMethod提供輸入校驗。
13) 考慮對WebMethod的結(jié)果使用緩存。
14) 選擇適用的大數(shù)據(jù)包傳送方式。
15) 避免調(diào)用本地的WebService。
客戶端向服務(wù)端發(fā)送數(shù)據(jù),服務(wù)端進行數(shù)據(jù)解析,反饋信息給客戶端,這中間的環(huán)節(jié)只要某一個環(huán)節(jié)出現(xiàn)問題,都會造成接口的失敗。按照失敗產(chǎn)生的環(huán)節(jié)分類,我們可以從三個方面來處理接口的失敗。
1)網(wǎng)絡(luò)連接失敗。
2)反饋錯誤信息。
3)網(wǎng)絡(luò)連接正常,但是無信息反饋。
通過以上的幾個步驟的考慮,就可以完成一個數(shù)據(jù)的采集、發(fā)送的安全的數(shù)據(jù)接口,也將在系統(tǒng)開發(fā)的過程中給大家以指導(dǎo)。
參考文獻
[1]Brunner, Robert. Practical Guide for Programmers[J]. Morgan Kaufmann Publishers, 2003,16(2):233-237.
Internet data interface development and Application ZONG Han-wen
(Telecommunications and information consulting service center of China Academy of Telecommunication Research,Beijing,China)
Abstract:I have been engaged in the development of many projects, have used VB language, C+ language and C# language, now the application of data interface is now more and more broad, but its security and efficiency are also worried about people. I have experienced in the project, summed up some of the data interface design experience.
KeyWords:Data interface;exploit;apply