Java 掃描的最佳實務

掃描 AppScan on Cloud 中的 Java 專案時,若您使用 Maven 或 Gradle 進行建置(且大部分 Java 應用程式均使用其中之一),則應使用對應的 ASoC MavenGradle 外掛程式。

然而,如果您不使用其中一種工具,我們建議使用 appscan-config.xml 將掃描限制為僅掃描您的程式碼,並提供 classpath 讓所有相依性都找得到。

使用 appscan-config.xml 設定限制掃描的主要步驟如下:

  1. 執行 IRGen 程序的測試 (dry run) 並檢查結果,以識別要包含和排除的套件。
  2. 設定 appscan-config.xml 以相應地包含和排除套件。
  3. 執行另一次測試 (dry run) 以確認要掃描的套件正確無誤。
  4. 如果一切正常,執行 appscan prepare 以產生 IRX 檔案。

執行測試 (dry run) 並檢查結果

測試 (dry run) 會檢查掃描中包含的檔案,並傳回兩項資訊:
  • 將包含在掃描中的套件。
  • 找不到任何相依關係的套件名稱。
若要執行測試 (dry run),請在目標目錄上執行 appscan prepare -dr 。例如:
  • 在 Windows 上:
    appscan.bat prepare -dr
  • 在 Linux 上:
    appscan.sh prepare -dr
範例輸出:
Validating classes...
100%
Validation complete.
__ 

The following packages/namespaces will be analyzed:
                com.ibm.security
__ 

The following problems were found:
                Missing required reference com.ibm.security.appscan.*
                Missing required reference javax.servlet.*
                Missing required reference javax.servlet.http.*
                Missing required reference javax.ws.rs.*
                Missing required reference javax.ws.rs.core.*
                Missing required reference org.apache.commons.codec.binary.*
                Missing required reference org.apache.commons.lang.*
                Missing required reference org.apache.wink.json4j.*
檢查要在掃描中分析的套件清單,確保僅分析預期的程式碼。

配置 appscan-config.xml

在執行測試 (dry run) 並評估結果後,配置 appscan-config.xml

  1. 如果有不應掃描的套件名稱(例如第三方相依性或其他團隊的內部相依性),有兩種方法可以將掃描範圍指定為您要的程式碼:
    • appscan-config.xml 中指定 package_includes 屬性,以便將掃描列入待分析套件的白名單。此值為內含一或多個套件名稱並以分號分隔的清單。
      例如:
      package_includes="com.hcl.appscan.client;com.hcl.appscan.server"
    • appscan-config.xml 中,使用 <Exclude> 標籤來排除第三方檔案和/或目錄。<Exclude> 標籤的內容為型樣,而 * 字元可作為萬用字元。
      例如,
      <Exclude>myDependency-.jar</Exclude>
      註: 這兩種方法可以擇一使用或兩者併用。
  2. 指定掃描範圍後,檢閱遺失套件的清單,並識別包含這些套件的 .jar 檔案。使用 appscan-config.xml 中的 additional_classpath 屬性,指定每個遺失 .jar 檔案的位置。additional_classpath 屬性值是每個 .jar 檔案路徑的分隔清單。在 Linux/Mac 上,分隔符號是冒號字元 ( : ),在 Windows 上則為分號字元 ( ; )。
    例如:
    additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/
下列範例 appscan-config.xml 包含上述修改。
註: appscan-config.xml 應放置在將要執行 appscan prepare 指令的目錄中。appscan-config.xml 中的任何相對路徑都應該相對於該目錄。請在這裡進一步瞭解 appscan-config.xml
<Configuration>
 <Targets>
 <Target path="./myApp">
 <CustomBuildInfo package_includes=”com.hcl.appscan.client;com.hcl.appscan.server” additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/>
 <Exclude>myDependency-.jar</Exclude>*
 <Exclude>abc.jar</Exclude>
 </Target>
 </Targets>
</Configuration>

appscan-config.xml 儲存至適當的位置後,再次執行 appscan prepare -dr 以確認要分析的套件清單符合預期且並未遺漏參照。如果一切順利,則使用 appscan prepare 產生 IRX 檔案