使用「AppScan 資料流量記錄器」,在 AppScan® Enterprise 中的測試自動化
「AppScan 資料流量記錄器」可讓您記錄資料流量,以在您的 AppScan Enterprise (ASE) 工作中當作「探索」資料使用。「AppScan 資料流量記錄器」是用於管理資料流量記錄器實例的系統。您可以依需求建立資料流量記錄器實例,以記錄稍後將用於 DAST 掃描的資料流量。此文件說明如何設定及使用資料流量記錄器。
概觀
- 使用「AppScan 資料流量記錄器」時,您可以自動啟動資料流量記錄器實例。從自動化架構送往 Web 應用程式的要求會被記錄下來,因為是透過「資料流量記錄器」所傳送。資料流量會以 HAR 格式儲存在 .dast.config 檔案中,而您稍後可以上傳該檔案,以供 AppScan Enterprise (ASE) 用作掃描的「探索」資料。
- 您也可以手動透過「資料流量記錄器」記錄資料流量,以建立 .dast.config 檔案。
- 您也可以直接將自己的 HAR 檔案上傳至 ASE,而不需要使用「資料流量記錄器」。
此圖表描繪 automated scan flow with AppScan® Enterprise。

一般工作流程
安裝 AppScan 資料流量記錄器
- 下載其中一個現行 Node.js 版本(v14.14 以上的版本),並安裝在您的機器上。如果您的服務符合 FIPS 標準,則您必須使用符合 FIPS 標準的 Node.js 伺服器。
- 將 TrafficRecorder.Windows.zip 解壓縮到機器上的資料夾。
- 若要改寫「資料流量記錄器」要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
配置「AppScan 資料流量記錄器」
符合 FIPS 標準模式
- 在「資料流量記錄器」的根資料夾中找到 Settings.json 檔案,然後在文字編輯器中開啟。
- 找到 requireFips 設定,並將其值從 false 變更為 true。
- 儲存檔案。
資料流量記錄器連線
- 若要設定「資料流量記錄器」要在其上執行的預設埠,請執行下列動作:在 Settings.json 中配置埠設定。
- 若要安全 (SSL) 連線至「資料流量記錄器」:在 Settings.json 中配置您自己的 PEM 或 PKCS12 憑證。
- PEM 憑證需要兩個檔案(完整路徑),而 PKCS12 憑證需要一個檔案(完整路徑)和密碼。
- 請不要忘記視需要在檔案路徑和密碼中跳出字元,例如 abc!”123 這類密碼會變成 abc!\”123(已跳出 ")。
使用 openssl 來建立 PEM 憑證的範例:
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt
使用 openssl 將 PEM 憑證轉換為 PKCS12 憑證的範例:
openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt
使用 JAVA 的 keygen 工具將 JKS 憑證轉換為 PKCS12 憑證的範例:
keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12
主要憑證
如果您要測試的應用程式使用 SSL (HTTPS),則「AppScan 資料流量記錄器」必須作為記錄資料流量的中間人。若要這麼做,它必須具有主要憑證,可用來簽署它與應用程式的通訊。
- 在您的機器上安裝「AppScan 資料流量記錄器」所產生的憑證:
- 使用 REST API 下載「AppScan 資料流量記錄器」所用的自簽「主要憑證管理中心」(PEM 檔案)。
- 在用於「探索」的瀏覽器上或是任何需要的地方(視資料流量來源而定)安裝憑證。
- 將您自己的主要憑證匯入至「AppScan 資料流量記錄器」。支援的憑證格式有 PKCS12(.P12、.PFX)、JKS:
- 開啟指令行視窗,並且導覽至「資料流量記錄器」機器上的安裝資料夾。
- 執行下列指令:
.\Java\jre\bin\java -jar DastProxy.jar -irc [path to certificate file] -ircp [password]
註: 若要查看完整的指令用法,請執行 .\Java\jre\bin\java -jar DastProxy.jar 指令。重要:因為憑證將會儲存在「資料流量記錄器」上,所以建議您使用專用的測試憑證。
- 在 StartProxy 指令中提供您自己的固定伺服器憑證(不是主要憑證)。
設定閒置逾時
如果資料流量記錄器實例在使用後未以關閉指令關閉,將會維持開啟並且在埠上接聽。如果資料流量記錄器實例閒置超出預先定義的時間,則會自動關閉。
資料流量記錄器實例的預設閒置逾時為 60 分鐘。您可以在 Settings.json 檔案(儲存於安裝資料夾)中變更 inactivityTimeoutInMinutes 的值。
加密資料流量
依預設,資料流量 (.dast.config) 檔案未加密。若要配置伺服器加密所有資料流量,請將 Settings.json 檔案(可以在安裝資料夾中找到)中的 "encryptDastConfig" 值變更為 “true”。
鏈結 Proxy
如果您需要定義多個已鏈結 Proxy,或是定義 Proxy 的例外,請使用安裝資料夾中的已鏈結 Proxy 規則檔案 (proxy.chain)。檔案包括使用的指示。
啟動/停止資料流量記錄器
您可以直接啟動「資料流量記錄器」,或是當成服務來執行(如下)。請注意,您不能同時執行這兩項作業。
- 執行此指令: node app.js [port]
其中 *port = 資料流量記錄器用來接聽 REST API 要求的埠。
- 如果您在啟動「資料流量記錄器」時未定義埠,則會使用 Settings.json 檔案中設定的埠,如果該處未定義任何埠,則會使用埠 8383。
- 不需要停止「資料流量記錄器」,您可以讓它永久地執行。
以 Windows 服務啟動
若要啟動服務,請執行下列指令:
node service.js --install
node service.js --start
其他服務指令
您可以執行 node service.js --help 指令來列印這份清單
服務指令 | 說明 |
---|---|
--start | 啟動服務 |
--stop | 停止服務 |
--install | 安裝服務 |
--uninstall | 停止並解除安裝服務 |
--h | --help | 輸出用法資訊 |
停止 Windows 服務
若要使用服務資料夾中找到的 service.js 執行檔,來停止「資料流量記錄器 Windows 服務」,請執行以下指令:
node service.js --uninstall
使用 systemD 啟動為 Linux服務
- 在 systemD 目錄下建立新檔案(通常是:/etc/systemd/system)。例如 sudo vim /etc/systemd/system/TrafficRecorder.service。 File content:
[Unit]
Description=Appscan TrafficRecorder
After=multi-user.target[Service]
ExecStart=[path to node here] [path to app.js here]Restart=always
RestartSec=10StandardOutput=syslogStandardError=syslog
SyslogIdentifier=TrafficRecorder[Install]
WantedBy=multi-user.target
Example for ExecStart: ExecStart= node /home/admin/Documents/TrafficRecorder.Linux.1.2.0/app.js
- 請確定 app.js 和內部 java 檔案:/java/bin/java 具有「以執行檔執行」的許可權。
- 使用下列指令重新載入 systemD 檔案: sudo systemctl daemon-reload
- 使用下列指令啟動服務: sudo systemctl start TrafficRecorder.service
- 您可以使用下列指令來檢查狀態: sudo systemctl status TrafficRecorder.service 註: 狀態應該顯示為「作用中:作用中(執行中)」
- 使用下列指令來啟用服務: sudo systemctl enable TrafficRecorder.service
停止 Linux 服務
- 使用下列指令來停止服務: sudo systemctl stop TrafficRecorder.service
- 使用下列指令來停用服務: sudo systemctl disable TrafficRecorder.service
使用資料流量記錄器
「資料流量記錄器」啟動之後,您就可以啟動新的資料流量記錄器實例,以記錄您應用程式的資料流量。
- 如果要啟動資料流量記錄器實例,請使用 REST API 要求:StartProxy
- 透過已定義的資料流量記錄器埠,將資料流量傳送至您要測試的應用程式。
- 完成時,請傳送 REST API 要求:StopProxy。
- 傳送 REST API 要求,以下載包含所記錄資料流量的 .dast.config 檔案:資料流量。檔案是 ZIP 檔案,其中包含一或多個 .har(HTTP 保存)檔案。當您下載此檔案時,系統會從「AppScan 資料流量記錄器」刪除該資料。
- 您可以利用 ASE REST API,使用 .dast.config 檔案來更新現有工作的「探索」資料。請參閱說明文件連結:https://<domain>:9443/ase/api/pages/apidocs.html。如需相關資訊,請參閱資料流量記錄器 API 指令章節。
資料流量記錄器 API 指令
「資料流量記錄器」啟動之後,您就可以啟動資料流量記錄器實例,以記錄您應用程式的資料流量。
文件
若要在 Swagger 中檢視完整的 REST API 文件,請在瀏覽器中鍵入:http(s)://<server>:<port>
所有指令都會指向與下列類似的端點:
http(s)://[server]:[port]/automation/
server = 在其上安裝「資料流量記錄器」之機器的 IP 位址(預設值為 localhost)
port = 資料流量記錄器接聽的埠
"StartProxy"
- URL:http://[server]:[port]/automation/StartProxy/<recordingPort>
- 要求類型:POST 或 GET(如果使用 chainedProxy、proxyCertificate 和 clientCertificate,則要求是 POST;否則就是 GET)
"StopProxy"
- URL:http://[server]:[port]/automation/StopProxy/<recordingPort>
- 要求類型:GET
"StopAllProxies"
停止所有執行中的資料流量記錄器實例。這個指令會停止所有埠上的任一個資料流量記錄器實例,包含其他使用者所啟動的實例。
- URL:http://[server]:[port]/automation/StopAllProxies
- 要求類型:POST
"EncryptDastConfig"
- URL:http://[server]:[port]/automation/EncryptDastConfig
- 要求類型:POST
"DownloadEncryptedDast"
- URL:http://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
- 要求類型:GET
"Traffic"
- URL:http://[server]:[port]/automation/Traffic/<recordingPort>
- 要求類型:GET
"Certificate"
- URL:http://[server]:[port]/automation/Certificate
- 要求類型:GET