针对 Java 扫描的最佳做法
在 AppScan on Cloud 中扫描 Java 项目时,如果您将 Maven 或 Gradle 用于构建(大多数 Java 应用程序使用其中一个),则应使用相应的 ASoC Maven 或 Gradadle 插件。
但是,如果您不使用其中一种工具,我们建议使用 appscan-config.xml
将扫描仅限为您的代码,并提供 classpath
,以便找到所有依赖关系。
使用 appscan-config.xml
设置有限扫描的主要步骤包括:
- 执行 IRGen 流程的试运行并检查结果,以标识要包括和排除的包。
- 配置
appscan-config.xml
以相应地包括和排除包。 - 再次执行试运行,以确认要扫描的包正确。
- 如果一切正常,请运行
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
:
- 如果存在不应扫描的包名称(例如,第三方依赖关系或其他团队的内部依赖关系),有两种方法可用于将扫描范围限定为仅预期代码:
- 在
appscan-config.xml
中,指定package_includes
属性,以将扫描白名单设为仅包含要分析的包。该值是一个或多个包名称的分号分隔列表。例如:package_includes="com.hcl.appscan.client;com.hcl.appscan.server"
- 在
appscan-config.xml
中,使用<Exclude>
标记排除第三方文件和/或目录。<Exclude>
标记的内容是一种模式,*
字符可以用作通配符。例如,<Exclude>myDependency-.jar</Exclude>
注: 可以使用这两种方法中的一种或两种。
- 在
- 指定扫描范围后,审核缺失包的列表并标识包含这些包的
.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 文件