支援的 Java 原始碼註釋

使用靜態分析來掃描 Java 時,支援 @ValidatorMethod@CallbackMethod@SuppressSecurityTrace 方法層次註釋。

使用註釋

您可以透過遵循下列步驟來使用註釋:

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

您可以在掃描之前新增註釋至原始碼;或是在掃描之後及分類期間新增註釋,以便識別及刪除誤判。如果您要在已安裝靜態分析外掛程式的 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 註釋,識別應用程式原始碼中的所有驗證器和消毒器方法。由於現在將資料視為安全,因此在靜態分析掃描期間,將會使用這項資訊來移除通過這些方法的資料流程。

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

@SuppressSecurityTrace

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

@CallbackMethod

這個註釋用來識別應用程式的回呼點或進入點。所有的引數都被視為帶有污染。