属性视图:选定的项目
在“属性”视图的此方式下,可配置选定项目的参数。项目属性取决于先前创建的全局属性。属性因选定项目而有所不同。
选定项目“概述”选项卡
“概述”选项卡中显示:
- 项目名称。可以通过在该字段中输入新名称来重命名项目。
- 项目文件名和路径
- 项目类型
- 配置:此部分显示目标配置。对于 .NET 和 C++Objective-C 项目,此部分显示已在“项目依赖关系”选项卡中保存的目标配置。对于所有其他项目类型,此部分显示缺省值。
- 过滤器选项:选择外部源中包含的过滤器发现结果,以过滤出扫描项目源文件以外的文件中所发现的任何发现结果。如果项目以编译器生成的文件或临时文件(如 ASP.NET)来报告发现结果,那么该选项可降低其噪声。
- 扫描密钥:选择启用密钥扫描以为仅源代码扫描调用密钥扫描,以及其他相关扫描程序。调用时,引擎会在要扫描的代码中检测到密钥时,检查硬编码密码、信用卡号和社会保险号 (SSN)。
- 漏洞分析高速缓存选项:如果要通过迭代扫描和添加定制规则,然后在不更改源代码的情况下重新扫描来优化代码库的评估,那么您可以通过将项目属性设置为使用漏洞分析高速缓存来极大地减少扫描时间。要执行此操作,请在项目属性中选中启用漏洞分析高速缓存复选框。选中此复选框后第一次扫描项目时,将创建漏洞分析高速缓存。每次对项目进行后续扫描时,都将使用漏洞分析高速缓存,从而可缩短扫描时间。
要清除漏洞分析高速缓存,请单击清除高速缓存。下次扫描项目时,将发生完整扫描,并将创建新的漏洞分析高速缓存。在下列情况下,您可能希望清除高速缓存:
- 上次扫描后,项目中的源代码已更改。
- 已更改了项目配置,如添加或删除源文件。
- 已更改代码配置选项。例如,如果要扫描 Java™,且类路径已经更改,那么您可能希望清除高速缓存;或者如果要扫描 C 或 C++,且已更改了
include
路径或预处理器定义,也可能希望清除高速缓存。
注: 还可通过在“定制规则向导”中创建定制规则时选中清除高速缓存复选框来清除漏洞分析高速缓存。 - 字符串分析:字符串分析监控 Java™ 或 Microsoft™ .NET 项目中的字符串操控。它能够自动检测清理器和验证器例程。通过此检测,可减少错误的肯定和否定。选择启用字符串分析以查找验证器/清理器函数复选框以启用字符串分析。将导入的规则应用于全局作用域复选框确定是将发现的清理器和验证器例程应用于单个项目,还是在全局级别上应用(应用于所有项目)。注: 字符串分析的应用会降低扫描速度。因此,建议仅在更改代码后应用,并针对后续扫描将其禁用。此外,所发现的例程应作为建议由审计员进行复审。可以在“定制规则”视图中查看这些例程。
- 文件编码:必须对项目中文件的字符编码进行相应设置,以便 AppScan® 源代码 可以正确读取这些文件(并且例如,在源视图中正确显示这些文件)。注: AppScan® 源代码 项目的缺省文件编码为 ISO-8859-1。此缺省文件编码可在“常规”首选项页面中进行更改。
过滤器
该选项卡使您能够指定选定项目的现有过滤器,以及您想要如何应用过滤器(可直接应用过滤器,也可应用其反向过滤器)。请参阅 筛选和分析 以获取关于过滤器的信息,并参阅 全局应用过滤器 以获取关于全局地应用过滤器的详细信息。
模式规则和规则集
在“资源管理器”视图中选择项目时,“属性”视图中的“模式规则和规则集”选项卡允许您添加扫描项目时将应用的模式规则和规则集。使用基于模式的扫描来搜索希望显示为发现结果的文本模式。各个规则和规则集可应用于应用程序和项目。请参阅 以基于模式的规则进行定制 以了解有关基于模式的分析的信息,并参阅 应用模式规则和规则集 以了解有关如何在“属性”视图中应用规则和规则集的信息。
文件扩展名
使用该选项卡可为项目配置或添加有效的文件扩展名,从扫描排除文件,并将扩展名指定为 web 文件。
文件扩展名部分列出了已在当前项目类型的 项目文件扩展名 首选项页面中全局设置的扩展名(可使用文件扩展名集菜单为其他项目类型选择文件扩展名)。要从当前项目的扫描排除扩展名,在列表中选择扩展名,并单击排除扩展名。这会导致扩展名在选项卡的已排除的扩展名部分中列出。
要为项目添加其他扩展名,在其他扩展名部分中选择添加扩展名,然后输入文件扩展名,并指示是应该扫描带有该扩展名的文件,将其视为 web 文件还是将其排除。
设置 | 描述 | 用法示例 |
---|---|---|
扫描或评估 | 包含带有在完整分析中指示的扩展名的文件。 |
|
Web 文件 | 用针对 JSP 编译的指定扩展名标记文件。该设置使 AppScan® 源代码 能够将 web 源与非 web 源分开。 | 如果已为 Java™ 项目创建 .yyy 扩展名并将此扩展名标记为 Web 文件,那么具有该扩展名的文件将被安排为项目中的 Web 源。当 AppScan® 源代码 为分析做准备时,这些文件将被预编译为类以进行分析。 |
排除 | 请勿在项目中为带有指定扩展名的文件创建源文件。将不会扫描带有该扩展名的文件。 | 为项目需要进行编译的文件创建 .zzz 扩展名,但无需包含在分析中。 |
源
指定扫描中将包含的源。
- 工作目录:AppScan® 源代码 项目文件 (ppf) 的位置和所有相对路径的基础。
- 添加源根目录和除去源根目录:“源”选项卡显示为来自“项目配置向导”的项目或在已导入 ppf 中定义的项目建立的属性。
仅当选择源根目录图标时,除去源根目录才可用。它用于除去源根目录。
- 查找源根目录(仅限 Java™ 项目):允许 AppScan® Source for Analysis 自动查找所有有效的源根目录。
- 项目文件在源根目录图标下列出。从扫描排除的文件具有红色文件图标(如果右键单击了排除的文件,那么其菜单中的排除被禁用,包含被启用。)要排除包含的文件,右键单击该文件并选择菜单中的排除。要包含排除的文件,右键单击该文件并选择菜单中的包含。
JavaServer Page (JSP) 项目依赖关系
“JSP 项目依赖性”选项卡显示针对特定 JSP 项目建立的属性。
- 包含 Web (JSP) 内容:确定项目是否为包含 JavaServer Page 的 Web 应用程序。
- Web 上下文根:Web 上下文根是包含 WEB-INF 目录的 WAR 文件或目录。Web 上下文根必须是有效 Web 应用程序的根目录。
- JSP 编译器:现成可用的 Tomcat 9 是缺省 JSP 编译器设置(缺省 JSP 编译器可以在 Java™ 和 JSP 首选项页面中进行更改)。要了解 AppScan® 源代码 支持的编译器的相关信息,请参阅系统需求和安装必备软件。AppScan® 源代码AppScan® 源代码
项目依赖性
“项目依赖关系”选项卡显示项目属性。此选项卡上的配置设置会根据语言而不同,例如:
- 使用选项可以选择任何其他必需的编译器参数。
- JDK 设置特定于 Java™。
- 预处理器定义特定于 C/C++ 代码。指定预处理器定义时,不要包含编译器的
-D
选项(例如,指定a=definition1
而不是-Da=definition1
)。指定多个定义时,请使用分号分隔的列表。 - 目标配置仅可用于 .NET 和 C++Objective-C 项目。
编译
- 选项:项目配置所需的其他编译器参数。
- 使用 JDK:确定用于项目编译的 JDK,如首选项中所配置。请参阅 首选项。
Java™ 项目可能引用本地 Java™ Development Kit (JDK) 位置。当项目移动到服务器时,JDK 路径可能会不再有效。要将本地项目传输到服务器,必须确定各项目中指定已命名 JDK 的缺省 JDK 路径。
注: JSP 项目的缺省编译器是 Tomcat 9,后者需要 Java™ V1.8 或更高版本。如果 Tomcat 8 保留为缺省值,那么使用更低版本的 JDK 将导致扫描期间出现编译错误。 - 验证:验证可确保正确配置项目依赖关系。它检查 Java™ 项目中源和类路径之间的配置冲突,并检查编译错误。如果类路径中的类在源根目录中重复出现,那么存在冲突。(如果存在冲突,请修改类路径以除去有冲突的类。)
检查完冲突后,验证将确定项目是否编译和报告了任何编译错误。
优化
- 预编译类:使用预编译的 Java 或 JSP 类文件而不是在扫描期间进行编译。选中时,此选项禁用源阶段选项。
- 登台源文件以将编译错误的影响最小化:控制 AppScan® 源代码 是否将源复制到登台目录。
更正与目录不匹配的软件包需要 Java™ 编译以打开各源文件。
清理扫描之间的登台区域将提高扫描之间的性能。
预编译选项卡(仅 ASP.NET)
预编译通过向 Web 站点中的特定页面(缺省情况下是 precompile.axd
)发出 HTTP 请求来实现。此页面通过 web.config
中指定的特定 HTTP 处理程序进行处理。此处理程序可将整个站点(包括 client.aspx
文件)编译到 .NET Framework 目录中的临时 ASP.NET 文件目录(然后在这里全部进行扫描)。
要扫描 ASP.NET 1.1,必须对 Web 站点进行相应配置,使之编译和构建了调试消息。从而,Web 站点编译和构建调试信息这一事实其本身就是安全漏洞。由于扫描需要,您可以安全地忽略此漏洞。然而,请确保您部署的应用程序在 web.config 中没有编译 debug=true
。
要对 ASP.NET 1.1 Web 站点进行预编译,请将以下元素作为 <system.web>
元素的子代添加到 web.config 文件中:
<httpHandlers><add verb="*" path="precompile.axd"
type="System.Web.Handlers.BatchHandler"/></httpHandlers>
还应在编译元素中设置 debug=true
。例如:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpHandlers><add verb="*" path="precompile.axd"
type="System.Web.Handlers.BatchHandler"/>
</httpHandlers>
<compilation
defaultLanguage="c#"
debug="true"
/>
...
此元素指定 Web 站点的页面 precompile.axd 将通过特定 .Net System.Web.Handlers.BatchHandler
类进行处理。此类将 Web 站点的内容预编译到临时 ASP.NET 文件目录。
- Web 站点:预编译站点的请求目标。缺省位置为 precompile.axd。是一个虚拟文件,并映射到 web.config 文件中指定的文件。
- 输出目录:作为预编译目标的目录。Source 在此目录中查找预编译输出。
- 预编译 ASP.NET Web 站点:AppScan® 源代码 在扫描期间自动预编译并扫描已预编译的输出。
- 如果预编译失败则停止扫描:选择预编译 ASP.NET Web 站点和如果预编译失败,停止扫描后,预编译失败时扫描将停止。否则,扫描将仅针对 Web 站点的主要输出继续。
- 立刻编译:扫描之前运行此测试,以查看基于当前设置的预编译是否成功。编译输出将在“预编译输出”窗格中显示。
- 其他组合件:对于任何 .NET 项目类型,请指定要扫描的其他组合件。
- 项目引用:列出了在其中搜索 .NET 组合件项目和现有 .NET 项目中所引用组合件的目录。