執行 Maven 專案的靜態分析
為了能夠起始檔案的分析,您必須產生要提交至雲端的 IRX 檔案。HCL AppScan on Cloud Maven 外掛程式是用來讓 Maven 中 jar
、war
和 ear
專案的掃描自動化。它會為具有「jar」、「war」和「ear」包裝類型的 Maven 專案產生 IRX 檔案。還可以將已產生的 IRX 檔案提交至 ASoC 服務以自動進行分析。如果您要掃描 Maven 專案,請遵循這些指示來建立該檔案。
執行這項作業的原因和時機
程序
- 在命令提示字元中,發出指令以將目錄切換為含有 Maven 專案的位置(含有 pom.xml 檔案的資料夾)。
-
設定
APPSCAN_OPTS
環境變數以在執行掃描前指定廣域選項。使用APPSCAN_OPTS
設定掃描速度、啟用密碼掃描、啟用除錯記載等等。 -
發出下列其中一個指令:
- 若只要產生 IRX 檔案,請發出:
這個指令會針對建置中的所有mvn com.hcl.security:appscan-maven-plugin:prepare
jar
、war
和ear
專案產生單一 IRX 檔案。IRX 檔案預設會在根專案的目標目錄中產生。您可以稍後將 IRX 檔案提交至 ASoC。 - 若要產生 IRX 檔案並且將其傳送至 ASoC 服務以進行分析,請發出:
這個指令會產生 IRX 檔案,並且將它提交至 ASoC 服務以進行分析。這個作業需要應用程式 ID (mvn package com.hcl.security:appscan-maven-plugin:analyze
appId
)、API 金鑰 (appscanKey
) 和 API 密碼 (appscanSecret
)。註: 如果 Maven 專案在相同的反應程式建置中,與另一個專案之間有編譯時期相依關係,則現有的 Maven 錯誤會導致指令失敗。若要解決這個問題,請執行package
目標與prepare
或analyze
目標。例如:
或mvn package com.hcl.security:appscan-maven-plugin:prepare
mvn package com.hcl.security:appscan-maven-plugin:analyze
表 1. Maven 外掛程式的可配置選項 選項 預設值 說明 output
<root project>/target/<root project name>.irx
已產生 IRX 檔案的名稱及/或位置。如果選取的路徑不存在,則會套用預設路徑 (<root project>/target/<root project name>.irx) appId
空值。
analyze
的必要項目。雲端服務中應用程式的 ID。 appscanKey
空值。
analyze
的必要項目。用於識別的使用者 API 金鑰 ID。 appscanSecret
空值。
analyze
的必要項目。用於鑑別的使用者 API 金鑰密碼。 namespaces
空值。 覆寫自動名稱空間偵測。設為 ""
以停用名稱空間偵測。提示: 指令行公用程式 會包括 Tomcat JSP 編譯器。預設會在 IRX 檔案產生期間使用此 JSP 編譯器。當您在產生war
或ear
檔案的 IRX 檔案,而且想要使用不同的 JSP 編譯器時,請發出具有-DjspCompiler
選項的指令。例如:mvn com.hcl.security:appscan-maven-plugin:prepare -DjspCompiler=<jsp_compiler>
其中
<jsp_compiler>
是您要使用的 JSP 編譯器的路徑(指定伺服器的根目錄)。提示: 依預設,在 IRX 檔案產生的期間,不會掃描第三方程式碼。您可以遵循管理第三方 Java 和 .NET 排除中的指示來修改第三方程式碼排除設定。若要包括第三方程式碼,請發出搭配-DthirdParty
選項的指令。如果您是通常會在掃描中排除第三方程式碼的開發人員,則應使用此設定來包含第三方程式碼。
提示: 上述指令可透過下列兩種方式縮短:- 請將下列內容新增至 pom.xml 檔案的
<plugins>
區段:
若使用此方法,您便可以編輯 pom.xml 檔,所有其他使用者也會自動取得變更。不過,您必須先指定版本號碼。因此,有較新的版本可用時,您必須手動編輯及更新 pom.xml 檔。<plugin> <groupId>com.hcl.security</groupId> <artifactId>appscan-maven-plugin</artifactId> <version>1.0.10</version> </plugin>
- 將我們的
groupId
(com.hcl.security
) 新增至 Maven settings.xml 的外掛程式群組清單。例如,將下列內容新增至 ~/.m2/settings.xml 或 ${maven.home}/conf/settings.xml:
在進行此編輯之後,您可以使用<pluginGroups> <pluginGroup>com.hcl.security</pluginGroup> </pluginGroups>
appscan
字首來執行prepare
目標。例如:mvn appscan:prepare
如需更多資訊,請參閱 配置 Maven 以搜尋外掛程式。
註: 若要覆寫預設的名稱空間行為,請使用-Dnamespaces="<semi-colon delimited list of namespaces to scan>"
指令行選項。依預設,ASoC 會偵測給定專案的原始檔名稱空間,並且將掃描的類別新增至允許的清單,以僅包含存在於相同名稱空間中的類別。將該內容設為空字串 (""
) 會完全停用白名單。註: 如果您想要自行修改外掛程式,可以在這裡找到來源。 - 若只要產生 IRX 檔案,請發出:
使用 Maven 外掛程式加密 appscanSecret
執行這項作業的原因和時機
appscan-maven-plugin
加密您的 API 密碼。請參閱此處的要訣和技巧,以了解如何在 Maven 中加密密碼。程序
-
執行下列指令來產生加密的主要密碼:
mvn -emp myMasterPassword
-
將輸出複製到
~/.m2/settings-security.xml
,並放入<master>
標籤的值中:<settingsSecurity> <master>{rsB56BJcqoEHZqEZ0R1VR4TIspmODx1Ln8/PVvsgaGw=}</master> </settingsSecurity>
註: 您可以將settings-security.xml
檔儲存在不同的位置。如果您這麼做,則必須在執行時期使用選項-Dsettings.security=path/to/security-settings.xml
來指定位置。 -
執行下列指令來產生加密的 API 密碼:
mvn -ep apiSecret
-
將指令的輸出複製到
~/.m2/settings.xml
,並放入<password>
標籤的值中。<username>
標籤應該包含使用者 API 金鑰的值:<settings> <servers> <server> <id>appscan</id> <username>MyapiKey</username> <password>{uMrbEOEf/VQHnc0W2X49Qab75j9LSTwiM3mg2LCrOzI=}</password> </server> </servers> ... </settings>
-
使用 Maven 外掛程式來執行
analyze
目標:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO
如果您將settings-security.xml
檔放在非預設位置,則必須在執行時期指定該位置:mvn com.hcl.security:appscan-maven-plugin:analyze -DappId=X49Qab75j9LSTwiM3mg2LCrO -Dsettings.security=path/to/security-settings.xml