针对 Java 扫描的最佳做法

AppScan on Cloud 中扫描 Java 项目时,如果您将 Maven 或 Gradle 用于构建(大多数 Java 应用程序使用其中一个),则应使用相应的 ASoC MavenGradadle 插件。

但是,如果您不使用其中一种工具,我们建议使用 appscan-config.xml 将扫描仅限为您的代码,并提供 classpath,以便找到所有依赖关系。

使用 appscan-config.xml 设置有限扫描的主要步骤包括:

  1. 执行 IRGen 流程的试运行并检查结果,以标识要包括和排除的包。
  2. 配置 appscan-config.xml 以相应地包括和排除包。
  3. 再次执行试运行,以确认要扫描的包正确。
  4. 如果一切正常,请运行 appscan prepare 以生成 IRX 文件。

执行试运行并检查结果

试运行将检查扫描中将包含的文件并返回两条信息:
  • 扫描中将包含的包。
  • 找不到的任何依赖关系的包名称。
要执行试运行,请在目标目录上运行 appscan prepare -dr 。例如:
  • 在 Windows 上:
    appscan.bat prepare -dr
  • 在 Linux 上:
    appscan.sh prepare -dr
输出样本:
Validating classes...
100%
Validation complete.
__ 

The following packages/namespaces will be analyzed:
                com.ibm.security
__ 

The following problems were found:
                Missing required reference com.ibm.security.appscan.*
                Missing required reference javax.servlet.*
                Missing required reference javax.servlet.http.*
                Missing required reference javax.ws.rs.*
                Missing required reference javax.ws.rs.core.*
                Missing required reference org.apache.commons.codec.binary.*
                Missing required reference org.apache.commons.lang.*
                Missing required reference org.apache.wink.json4j.*
检查要在扫描中分析的包列表,以确保仅分析预期的代码。

配置 appscan-config.xml

执行试运行并评估结果后,配置 appscan-config.xml

  1. 如果存在不应扫描的包名称(例如,第三方依赖关系或其他团队的内部依赖关系),有两种方法可用于将扫描范围限定为仅预期代码:
    • appscan-config.xml 中,指定 package_includes 属性,以将扫描白名单设为仅包含要分析的包。该值是一个或多个包名称的分号分隔列表。
      例如:
      package_includes="com.hcl.appscan.client;com.hcl.appscan.server"
    • appscan-config.xml 中,使用 <Exclude> 标记排除第三方文件和/或目录。<Exclude> 标记的内容是一种模式,* 字符可以用作通配符。
      例如,
      <Exclude>myDependency-.jar</Exclude>
      注: 可以使用这两种方法中的一种或两种。
  2. 指定扫描范围后,审核缺失包的列表并标识包含这些包的 .jar 文件。使用 appscan-config.xml 中的 additional_classpath 属性,指定每个缺失 .jar 文件的位置。additional_classpath 属性的值是每个 .jar 文件的路径的分隔列表。在 Linux/Mac 上,分隔符是冒号字符 (: ),在 Windows 上,这是分号字符 (;)。
    例如:
    additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/
以下样本 appscan-config.xml 包括上述修改。
注: appscan-config.xml 应放在将运行 appscan prepare 命令的目录中。appscan-config.xml 中的任何相对路径都应相对于该目录。在此处详细了解 appscan-config.xml
<Configuration>
 <Targets>
 <Target path="./myApp">
 <CustomBuildInfo package_includes=”com.hcl.appscan.client;com.hcl.appscan.server” additional_classpath=”C:\myDependencies\lib\xyz.jar;C:\myDependencies\lib\sample.jar”/>
 <Exclude>myDependency-.jar</Exclude>*
 <Exclude>abc.jar</Exclude>
 </Target>
 </Targets>
</Configuration>

appscan-config.xml 保存到适当位置后,再次运行 appscan prepare -dr,以确认要分析的包列表符合预期,并且没有缺失引用。如果一切看起来都正常,请使用 appscan prepare 生成 IRX 文件