掃描一個 .NET 應用程式

2024/3/11 |

這個文章說明如何使用 Lucent Sky AVM 掃描一個 .NET 應用程式。

在這個文章中,你將會學習如何:

  • 掃描一個 .NET 應用程式。

本文結束後,你將能夠掃描一個 .NET 應用程式。

ASP.NET Web Application

ASP.NET Web Application 具有一個專案檔案(.csproj.vbproj),也可能是一個解決方案的一部份。

  • 如果網頁應用程式是一個獨立的專案,瀏覽至其專案目錄,並建立一個根目錄包含其專案檔案的壓縮檔案。
  • 如果網頁應用程式是一個解決方案中的一個專案,瀏覽至其解決方案的目錄,並建立一個根目錄包含其解決方案檔案(.sln)的壓縮檔案。建立掃描時,在 [分析目標] 指定其專案檔案在壓縮檔案中的相對路徑。

ASP.NET Web Forms Site(過去稱為 Web Site)

ASP.NET Web Forms Site 不具有專案檔案。

瀏覽至網站的跟目錄,並建立一個根目錄包含其頂層 web.config 檔案的壓縮檔案。

Windows Desktop 專案 和 WCF 專案

Windows Desktop 專案包含 WPF App、Windows Forms App、Console App、Class Library、Windows Service 和各種 Control Library。它具有一個專案檔案(.csproj.vbproj),也可能是一個解決方案的一部份。

  • 如果專案是一個獨立的專案,瀏覽至其專案目錄,並建立一個根目錄包含其專案檔案的壓縮檔案。
  • 如果專案是一個解決方案中的一個專案,瀏覽至其解決方案的目錄,並建立一個根目錄包含其解決方案檔案(.sln)的壓縮檔案。建立掃描時,在 [分析目標] 指定其專案檔案在壓縮檔案中的相對路徑。

.NET、.NET Core 專案、.NET Standard 專案**

.NET 和 .NET Core 專案包含 .NET Console App、.NET Class Library、ASP.NET Core Web Application 等。.NET Standard project 包含 .NET Standard Class Library。它具有一個專案檔案(.csproj.vbproj),也可能是一個解決方案的一部份。

  • 如果專案是一個獨立的專案,瀏覽至其專案目錄,並建立一個根目錄包含其專案檔案的壓縮檔案。
  • 如果專案是一個解決方案中的一個專案,瀏覽至其解決方案的目錄,並建立一個根目錄包含其解決方案檔案(.sln)的壓縮檔案。建立掃描時,在 [分析目標] 指定其專案檔案在壓縮檔案中的相對路徑。

.NET、.NET Core 專案、.NET Standard 專案僅和 .NET 或 .NET Core 組建工具相容,因此需選擇一個相容的執行環境。.NET Core 和 .NET Standard 專案應選擇 .NET Core 3.1,而 .NET 專案應選擇 .NET 6.0。使用這些執行環境可確保系統上最新的 MSBuild 會被用來組建這些專案。

其他考量

  • 基礎目錄

    BuildOutputPath 等掃描參數是相對於應用程式的基礎目錄(base directory)。當分析目標是一個專案檔案時,基礎目錄是專案檔案的上層目錄。例如,若分析目標是專案檔案 ContosoApi\Contoso.Api.csproj,基礎目錄是 ContosoApi。當分析目標是一個解決方案時,基礎目錄是其專案檔案和/或 web.config 檔案的上層目錄。例如,若分析目標是解決方案檔案 Contoso.sln 且其包含兩個專案,Contoso.Api\Contoso.Api.csprojContoso.Web\web.config,基礎目錄分別是 Contoso.ApiContoso.Web

  • 管理的或原生的 MSBuild

    對於 .NET Framework 專案,Lucent Sky AVM 使用對應的 .NET Framework 包含的 MSBuild。對於 .NET、.NET Core、.NET Standard 專案,Lucent Sky AVM 使用系統中最新且版本為 12 以上的 MSBuild。要使用系統中最新的 MSBuild 來組建 .NET Framework 專案,將 MsBuild,latest 加入至掃描參數中。要使用特定版本的 MSBuild,將指定的版本編號指定至 MsBuild 掃描參數中,例如 MSBuild,15

  • 組建成品

    Lucent Sky AVM 分析 MSBuild 輸出以找出組建成品進行二進位分析。若分析目標是一個解決方案,其所有專案的組建成品都將被用於二進位分析。要讓 Lucent Sky AVM 在特定的位置尋找組建成品,使用 BuildOutputPath 掃描參數來指定組建輸出目錄相對於基礎目錄的路徑或組建成品相對於基礎目錄的路徑。例如,若基礎目錄為 ContosoWeb 而組建成品位於 ContosoWeb\bin 目錄中,將 BuildOutputPath,bin 加入掃描參數中;若基礎目錄為 Contoso.ApiContoso.Web,且組建成品位於其各自的 Debug\bin 目錄中,將 BuildOutputPath,Debug\bin 加入掃描參數中。

    對於 ASP.NET 專案,Lucent Sky AVM 使用 ASP.NET 編譯的組建成品並忽略 BuildOutputPath 掃描參數。

  • MSBuild 屬性

    有些專案使用定義在專案檔案外的 MSBuild 屬性,例如環境屬性、登錄屬性、全域屬性。使用 BuildProperties 掃描參數來提供這些屬性。此參數的值應是 MSBuild -property 參數的值,但每個屬性以逗號而非分號分開。例如 PropA=Aye,PropB=Bee

  • 套件和依賴

    • NuGet

      如果專案使用 NuGet 來管理其參考套件,確保系統能夠存取此專案使用的來源。

    • SDK 和執行環境

      如果專案依賴安裝在開發和組建環境上的 SDK 和執行環境,確保這些 SDK 和執行環境有安裝在系統中,和程式碼一起包裝,或以自訂執行環境的方式存在。

  • 直接二進位分析

    Lucent Sky AVM 可以直接掃描 .NET 應用程式的二進位檔案,不論是否包含對應的程式碼。使用直接二進位分析可增快掃描時間,並可以完整掃描因缺少程式碼或 SDK 等原因而無法組建的應用程式。要對 .NET 應用程式進行直接二進位分析,建立掃描時,在 [分析目標] 指定其主要的二進位檔案在壓縮檔案中的相對路徑。

    要深入了解如何使用直接二進位分析掃描應用程式,請參考 Lucent Sky 知識庫:
    使用直接二進位分析掃描應用程式

  • 效能

    若應用程式包含大量 JSON 或 XML 格式,或有大量的備份檔案,建議在掃描前將這些檔案移除或將 ExcludeFileTypes 掃描參數設定為 BackupConfigBackup,Config 來將這些檔案排除在分析外以提升分析效能。

    若應用程式包含大量媒體檔案,建議在掃描前將這些檔案移除以減少所需要的磁碟空間。