整合新的 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 自訂掃描器

開始之前

本節假設已開發並測試過主要 F4F 處理程式和合成方法的產生方式。

程序

  1. 新增從外掛程式至 com.ibm.appscan.frameworks.wsdl.util(含有 Helper API 來報告找到的服務)的相依關係。它也存在於 walalib 資料夾。
  2. 在主要處理程式(延伸 F4FHandler 類別)的 handleApp() 方法開頭,新增這幾行:
    String filePath = WSDLReportingUtil.getServicesFilePath
         (getFrameworksInput().getFileLocs());
    if (filePath!=null) {
    WSDLReportingUtil.initXmlDocument(filePath);
    }

    這幾行會建立供自訂 WSDL 掃描器使用的暫存檔。

  3. handleApp() 方法結尾,新增這一行,以確定在 F4F 處理程式結束之前儲存所有已報告的服務:
    WSDLReportingUtil.saveXmlDocument();
  4. 為了報告服務,新增一個呼叫,以便從 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 格式的參數類型清單。
  5. 目前,自訂 WSDL 掃描器是以獨立式掃描器的形式運作,或當成 Java/JSP 掃描的一部分來運作。如果新的 F4F Web 服務處理程式可處理 Java 以外的語言(例如 .NET),請遵循下列步驟,確定以適當的掃描類型來呼叫 WSDL 自訂掃描器:
    1. 移至 <data_dir>/ltd 目錄 (其中 <data_dir>AppScan® 程式資料的位置,如所述 安裝和使用者資料檔位置
    2. 備份所有檔案,以防發生任何非預期的問題。
    3. 開啟對應於適當掃描類型的 .ltd 檔。例如,在 C++ 中,開啟 cpp.ltd 檔。
    4. <LanguageTypeDefinition> 結束標籤前面新增這一行:
      <Scanner name="wsdl"/>
    5. 複製 file_extention_set_name 值,下一步需要用到。
    6. 開啟 file_extensions.xml,找出具有上一步所複製之名稱的 FileExtensionSet
    7. 在檔案中的此處新增這一行:
      <FileExtension extension="wsdl" assess="true"/>
    8. 儲存所有檔案,重新啟動 AppScan®。現在,WSDL 自訂掃描器會執行來當作應用程式完整掃描的一部分。

結果

目前,WSDL 自訂掃描器只顯示 WSDL 檔中非由您的架構所實作的配置發現項目(在「發現項目」視圖中)。WSDL 檔中已由應用程式實作的任何服務,不會顯示為配置發現項目。這些將由新的 Web 服務 F4F 處理程式來分析。

簽章對映

執行這項作業的原因和時機

WSDL 自訂掃描器會嘗試根據對應的 WSDL 服務、WSDL 埠類型及 WSDL 作業,而比對所報告的方法。因此才會以 WSDL 格式來報告 Web 服務。為了能夠更容易理解,已經過一些簡化:

  • 對於任何 XSD 初始類型,不需要新增目標名稱空間。反之,只使用名稱(例如,stringintfloatdouble)。
  • 對於集合和陣列,類型後面加上 [](例如,string[]int[])。
  • 對於要對映至 XSD 複式類型的類別類型(使用 JAX-B 或其他任何技術),類型的呈現如下:
    http//my-types/myxsdnamespace/:Customer

    名稱空間應該放在 Java 註釋中。如果不是在 Java 註釋中,則應該符合呼叫者服務名稱空間或套件名稱,視架構的實作而定。

註: 對映錯誤很可能導致 WSDL 自訂掃描器無法比對所報告的 Web 服務 API 與相關聯的 WSDL 作業。在此情況下,將出現額外的配置發現項目。此額外發現項目應視為誤判,只表示對映問題。

如果不確定預期的簽章如何呈現,請從 AppScan® 對 WSDL 檔本身執行 WSDL 掃描。這會針對 WSDL 服務下的所有作業來產生發現項目。按一下每一個發現項目,就會在「發現項目詳細資料」視圖中顯示方法簽章。