整合新的 Web 服務 Framework for Frameworks 處理程式與現有的「Web 服務描述語言 (WSDL)」自訂掃描器
執行這項作業的原因和時機
使用 AppScan® 源 來掃描 JAX-RS 或 JAX-WS 應用程式時,應該確定您能夠擷取所有 Web 服務進入點,才不會錯過應用程式中的任何漏洞。本文件說明相關的技巧。其中,概述整合新的 Framework for Frameworks (F4F) 處理程式(用來分析不受支援的 Web 服務架構)與「Web 服務描述語言 (WSDL)」自訂掃描器所需的步驟。
這是必要的工作,如此,WSDL 自訂掃描器才能夠區分這個新的 F4F 處理程式已找到的 Web 服務進入點,與 WSDL 檔中存在的 Web 服務進入點。根據這項資訊,WSDL 自訂掃描器將會排除這個新的 F4F 處理程式已分析的配置發現項目。
將 Web 服務 F4F 處理程式連接至 WSDL 自訂掃描器
開始之前
程序
- 新增從外掛程式至
com.ibm.appscan.frameworks.wsdl.util
(含有 Helper API 來報告找到的服務)的相依關係。它也存在於 walalib 資料夾。 - 在主要處理程式(延伸
F4FHandler
類別)的handleApp()
方法開頭,新增這幾行:String filePath = WSDLReportingUtil.getServicesFilePath (getFrameworksInput().getFileLocs()); if (filePath!=null) { WSDLReportingUtil.initXmlDocument(filePath); }
這幾行會建立供自訂 WSDL 掃描器使用的暫存檔。
- 在
handleApp()
方法結尾,新增這一行,以確定在 F4F 處理程式結束之前儲存所有已報告的服務:WSDLReportingUtil.saveXmlDocument();
- 為了報告服務,新增一個呼叫,以便從
WSDLReportingUtil
API 中呼叫下列其中一個 API:reportService(String targetNameSpace, String serviceName, String methodSignature)
reportService(String targetNamespace, String serviceName, String operationName, ArrayList<String> wsdlParams)
其中:
targetNameSpace
是服務的目標名稱空間。例如,在 JAX-WS 中,這出現在註釋中或符合套件名稱。serviceName
是服務的名稱。這可在註釋中找到,也可能符合服務類別名稱。methodSignature
是來自 WSDL 檔的方法簽章(稍微簡化)。operationName
是方法的名稱,鏈結至 WSDL 檔中的一個「埠類型」的作業名稱。wsdlParams
是簡式 WSDL 格式的參數類型清單。
- 目前,自訂 WSDL 掃描器是以獨立式掃描器的形式運作,或當成 Java/JSP 掃描的一部分來運作。如果新的 F4F Web 服務處理程式可處理 Java™ 以外的語言(例如 .NET),請遵循下列步驟,確定以適當的掃描類型來呼叫 WSDL 自訂掃描器:
結果
簽章對映
執行這項作業的原因和時機
WSDL 自訂掃描器會嘗試根據對應的 WSDL 服務、WSDL 埠類型及 WSDL 作業,而比對所報告的方法。因此才會以 WSDL 格式來報告 Web 服務。為了能夠更容易理解,已經過一些簡化:
- 對於任何 XSD 初始類型,不需要新增目標名稱空間。反之,只使用名稱(例如,
string
、int
、float
、double
)。 - 對於集合和陣列,類型後面加上
[]
(例如,string[]
、int[]
)。 - 對於要對映至 XSD 複式類型的類別類型(使用 JAX-B 或其他任何技術),類型的呈現如下:
http//my-types/myxsdnamespace/:Customer
名稱空間應該放在 Java™ 註釋中。如果不是在 Java™ 註釋中,則應該符合呼叫者服務名稱空間或套件名稱,視架構的實作而定。
註: 對映錯誤很可能導致 WSDL 自訂掃描器無法比對所報告的 Web 服務 API 與相關聯的 WSDL 作業。在此情況下,將出現額外的配置發現項目。此額外發現項目應視為誤判,只表示對映問題。
如果不確定預期的簽章如何呈現,請從 AppScan® 源 對 WSDL 檔本身執行 WSDL 掃描。這會針對 WSDL 服務下的所有作業來產生發現項目。按一下每一個發現項目,就會在「發現項目詳細資料」視圖中顯示方法簽章。