Java 掃描的最佳實務
掃描 AppScan on Cloud 中的 Java 專案時,若您使用 Maven 或 Gradle 進行建置(且大部分 Java 應用程式均使用其中之一),則應使用對應的 ASoC Maven 或 Gradle 外掛程式。
然而,如果您不使用其中一種工具,我們建議使用 appscan-config.xml
將掃描限制為僅掃描您的程式碼,並提供 classpath
讓所有相依性都找得到。
使用 appscan-config.xml
設定限制掃描的主要步驟如下:
- 執行 IRGen 程序的測試 (dry run) 並檢查結果,以識別要包含和排除的套件。
- 設定
appscan-config.xml
以相應地包含和排除套件。 - 執行另一次測試 (dry run) 以確認要掃描的套件正確無誤。
- 如果一切正常,執行
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
:
- 如果有不應掃描的套件名稱(例如第三方相依性或其他團隊的內部相依性),有兩種方法可以將掃描範圍指定為您要的程式碼:
- 在
appscan-config.xml
中指定package_includes
屬性,以便將掃描列入待分析套件的白名單。此值為內含一或多個套件名稱並以分號分隔的清單。例如:package_includes="com.hcl.appscan.client;com.hcl.appscan.server"
- 在
appscan-config.xml
中,使用<Exclude>
標籤來排除第三方檔案和/或目錄。<Exclude>
標籤的內容為型樣,而*
字元可作為萬用字元。例如,<Exclude>myDependency-.jar</Exclude>
註: 這兩種方法可以擇一使用或兩者併用。
- 在
- 指定掃描範圍後,檢閱遺失套件的清單,並識別包含這些套件的
.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 檔案