信息系統安全——Web Service的安全調用

前言

信息化已經深入國家行政機關、企事業實際業務之中,下屬機構通過信息系統服務接口,定期向上級單位或監管部門提供業務數據、調查數據。在實際調用過程中,比較常用的是Web Service方法來傳遞數據,本篇就討論此接口的安全調用。

瞭解Web Service

這裡涉及到軟件開發的知識,能使得運行在不同機器上的不同應用無須藉助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。簡單的說就是在兩個不同的軟件項目間,搭建數據傳輸的方法。Web Service也很容易部署, 因為它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減少了應用接口的花費。

威脅Web Service

Web Services是在開放的Internet上運行的,這種環境即使受到防火牆的保護,也依然會受到黑客、計算機病毒的攻擊。而且在商業環境中,每個Web服務的狀態都可能涉及經濟利益和商業機密,如網絡購物服務中有電子貨幣信息;信息查詢服務中有商業機密(如價格、貨物種類等)。在Web Services運行過程中,對其狀態的非法讀取和惡意修改都將對安全性構成嚴重的威脅。

眾所周知,Web服務是使用XML進行數據交換的,而XML在默認情況下是明文編碼的;同時,大部分Web服務使用HTTP協議作為傳輸協議,同樣,HTTP也是使用明文方式來傳輸數據的。這就造成了在不加密的傳輸協議上傳輸不加密的信息,從而使信息傳輸的保密性受到威脅。比如,接口服務被非法調用,通過接口服務對數據進行篡改、信息系統入侵。儘管在生產環境中,大多數都建立VPN通道來承載接口調用,但依託於VPN機制進行內部攻擊的情況還是無法杜絕。所以,關鍵應在Web Service服務端建立認證機制,從源頭上解決非法調用的漏洞。

那麼,從哪些方面來保障調用的安全性呢?我們來參下《網絡等級保護標準2.0》,Web Service的調用,已經跨越了網絡和通信安全範疇,對它安全技術的參考範疇主要集中在設備和計算安全、應用和數據安全層級上。上圖中,在技術要求部分,通過身份鑑別和訪問控制方面,進行對訪問Web Service資源權限的控制。本篇也會通過列舉身份鑑別和訪問控制兩個方案,來部署安全的Web Service調用。如果你對軟件工程瞭解,更加容易理解本篇內容。

訪問控制

在這裡,我叫它代碼安全。完全通過代碼的方式來建立訪問控制認證。最常用的是使用 SoapHeader(SOAP 標頭)自定義訪問控制,SoapHeader 多數情況下用來傳遞用戶身份驗證信息。下面,我將介紹如何編寫訪問控制。

首先,我們先部署一個Web Service服務,這裡用到Windows IIS。

1、Web Service站點部署

>編寫一個Web Service服務代碼,兩三年沒寫過代碼了,好親切啊!

>在IIS建立站點:

把先前生成的代碼,複製到站點目錄中。同時將身份驗證改為匿名認證。

>在瀏覽器中打開.asmx文件,如果顯示下圖,Web Service部署成功

2、編寫Web Service訪問控制

>在Web Service項目中,建立MySoapHeader.cs類文件,用以初始化登陸信息

>在調用服務前,加入用戶訪問控制

上圖中,只有用戶名和密碼都為test,才可以調用,這裡也可以擴展為生物識別方法。

3、客戶端調用

這裡,我們分別使用正確和錯誤的信息

只有提供正確的登錄信息才能調用相應服務。

身份鑑別

這種方案,是基於 Windows身份驗證為Web services 配置傳輸層安全機制。當你通過 HTTP 協議去訪問一個使用 Windows身份驗證保護的資源時,服務器通常會在 HTTP 請求的 Response 中加入一個"401 需要身份驗證"的 Header,來通知客戶提供用戶憑證,以使用資源。如果你正在使用 Internet Explorer 或者 Mozilla Firefox 這樣的可視化瀏覽器來訪問需要認證的資源,瀏覽器會彈出一個窗口,讓你輸入用戶名和密碼,如果所輸入的用戶名在資源使用者的驗證列表,並且密碼完全正確,此時,用戶才可以訪問受限的資源。

>認證基本流程

>Web services 客戶端訪問受限 Web services 服務流程

下面就介紹下如何部署基於Windows身份驗證的Web Service服務。

>首先,需要在操作系統建立一個用戶,用來做身份驗證。本例用戶名為wsuser。

>在IIS管理器中配置身份驗證為Windows身份驗證

>客戶端編寫服務認證

> 客戶端調用

這裡,我們使用正確window用戶信息