支援的 .NET 原始碼屬性

使用靜態分析來掃描 .NET 時,支援 [ValidatorMethod][CallbackMethod][SuppressSecurityTrace] 方法層次屬性。當使用這些屬性時,也會接受 [ValidatorMethod()][CallbackMethod()][SuppressSecurityTrace()]

使用屬性

您可以透過遵循下列步驟來使用屬性:

  1. 依預設會啟用屬性支援。屬性 SecurityAttributes.dll 檔位於解壓縮的 SAClientUtil_<version>_<os>.zip 檔的 \annotation 目錄。
  2. 如果您要掃描經過前置編譯的類別、.exe 檔或 .dll 檔,請將 SecurityAttributes.dll 新增至包含加註的程式碼的 .NET 專案,然後重建專案。
  3. 如果您要在已安裝靜態分析外掛程式的整合開發環境 (IDE) 中掃描,請將 SecurityAttributes.dll 新增為參照。
  4. 如果您要使用靜態分析 CLI,請建立配置檔,並在其中設定 CustomBuildInfo additional_classpath="dependency_path",使得 dependency_path 包含 SecurityAttributes.dll 檔的位置。

您可以在掃描之前新增屬性至原始碼;或者可以在掃描之後及分類期間新增它們,以識別及刪除誤判。如果您要在已安裝靜態分析外掛程式的 IDE 中掃描,可以使用掃描報告中的「幫助我修正此問題」按鈕。當您選取此按鈕時,系統會顯示可在其中新增屬性的可能點。

系統提供屬性,讓您可以將知識以安全屬性的形式直接插入原始碼中。由於屬性可用於宣告程式碼安全的部分,因此應該謹慎運用。屬性不應用於需掃描是否有安全漏洞的程式碼。如果您使用屬性,則安全分析師可以透過停用 irgen-engine.apsettings 檔中的功能來忽略它們,該檔案位於解壓縮的 SAClientUtil_<version>_<os>.zip 檔案的 \config 目錄。在這個檔案中,請尋找這項設定:

<Setting 
  name="process_security_annotations"
  value="true"
  default_value="true"
  description="When turned on, method annotations will be processed - used by DotNet and Java LSPs"
  display_name="Process Security Annotations"
  type="bool"
/>

若要停用此功能,請將 value="true" 變更為 value="false"

註: 如果設定設為 value="false",當您想使用註釋時,請設為 value="true"

[ValidatorMethod][ValidatorMethod()]

驗證器是在輸入資料上執行檢查的方法,經常會傳回布林值,以指出輸入是否有效。您可以將使用者輸入變更為可接受的格式,而不是使用驗證器來接受或拒絕輸入。這些方法稱為消毒器。

您可以使用 [ValidatorMethod] 屬性來識別應用程式原始碼中的所有驗證器和消毒器方法。由於現在將資料視為安全,因此在靜態分析掃描期間,將會使用這項資訊來移除通過這些方法的資料流程。

註: 目前,並沒有規定要指定註解方法的哪些參數應被視為經過驗證。在靜態分析掃描期間,所有的輸入參數都會認定為已經過驗證。

[SuppressSecurityTrace][SuppressSecurityTrace()]

系統會移除流經標示此屬性方法的所有追蹤資料。當某一組追蹤資料被識別為誤判,或是比其他追蹤資料較不重要或較不引起關注時,這會非常有用。您可以使用此屬性來過濾掉或隱藏這些追蹤資料以減少雜亂。

[CallbackMethod][CallbackMethod()]

此屬性用來識別應用程式的回呼點或進入點。所有的引數都被視為帶有污染。