受支持的 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 中扫描,帮我修正该问题按钮将在扫描报告中可用。选择此按钮时,将显示可以添加注释的点。

提供注释是为了让您能够直接以安全性注释的形式在源代码中插入您的知识。因为注释可用于声明代码安全的部分,所以使用它们时应非常小心。它们不应用于会被扫描以查找安全漏洞的代码。如果使用注释,安全分析人员可通过禁用抽取的 SAClientUtil_<version>_<os>.zip 文件的 \config 目录中 irgen-engine.apsettings 文件中的功能来忽略这些注释。在此文件中,找到以下设置:

<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

该注释用于识别应用程序的回调或入口点。所有参数都被认为包含污点。