添加发现项表单 (Pro)
如果您使用的是全新的 DefectDojo 实例,导入扫描表单是学习该软件并搭建环境的合理的第一步。通过此表单,您可以上传受支持工具生成的扫描文件,系统会据此创建代表这些漏洞的发现项。在填写表单时,您可以决定:
- 将这些发现项存储在现有的产品类型 / 产品 / 测试活动下,或
- 创建新的产品类型 / 产品 / 测试活动来存储这些发现项
在 DefectDojo 中重新组织产品层级结构非常容易,所以即使您现在还不确定该如何设置也没关系。
现在您只需了解,测试活动可以存储来自多个工具的数据,如果您在一次测试工作中同时运行多个不同的工具,这会很有用。
访问导入扫描表单(Pro 界面)
导入扫描表单可通过多个位置访问:
- 通过侧边栏中的 导入 > 添加发现项 菜单选项
- 从产品表中某个产品的 “⋮”(横向省略号)菜单
- 从产品页面上的 ⚙️齿轮菜单
填写导入扫描表单
导入扫描表单会在某个测试活动下创建一个新的测试,该测试将包含扫描文件中每个漏洞对应的唯一发现项。
创建的测试名称将与扫描类型相匹配:例如,Tenable 扫描的测试名称将是“Tenable Scan”。
表单选项
- 扫描文件: 点击“选择”按钮,您可以从计算机中选择要上传的文件。
- 扫描日期(可选): 如果您想为本次导入产生的所有发现项指定同一个扫描日期,可以在此字段中选择日期。 如果您不选择扫描日期,从该报告创建的发现项将使用工具指定的日期。每个发现项的 SLA 将根据其日期计算。
- 扫描类型: 选择用于生成此数据的工具。
- 产品类型 / 产品 / 测试活动名称: 选择要在其下创建新测试的产品类型、产品和测试活动名称。如果需要,您也可以在此时通过输入要创建的对象名称来创建新的产品类型、产品和/或测试活动。
- 环境: 选择与您上传的数据相对应的环境。
- 标签: 如果您想使用标签进一步组织测试数据,可以通过此表单添加标签。输入要创建的标签名称,然后按键盘上的回车键将其添加到标签列表中。
- 异步处理发现项:此字段默认启用,但如果您愿意,也可以禁用。请参阅下方说明。
异步处理发现项
启用此字段后,DefectDojo 将使用后台进程为您的测试文件填充发现项。这样您就可以在从扫描文件创建发现项的同时继续使用 DefectDojo。
禁用此字段后,DefectDojo 会等待所有发现项成功创建完毕,您才能进入下一屏幕。根据文件大小的不同,这可能需要相当长的时间。
使用 API 导入数据时,此选项尤为重要。如果在上传数据时将异步处理发现项设为关闭,DefectDojo 将不会返回成功响应,直到所有发现项都已成功创建,
可选字段
要打开可选字段,请点击 提交 按钮上方标有 “Optional Fields +” 的按钮

可选字段说明
- 最低严重程度:如果您只想创建特定严重程度及以上级别的发现项,可以在此处选择最低严重程度级别。所有严重程度低于此字段设置的漏洞都将被忽略。
- 活动:如果您想将所有传入的发现项统一设置为活动或非活动状态,可以在此处指定。否则,DefectDojo 将使用工具提供的漏洞数据来判断该发现项是活动还是非活动状态。如果您需要团队对某个特定工具产生的发现项进行手动分类和验证,此选项就很重要。
- 已验证:与“活动”字段类似,您可以将新的一批发现项默认设置为已验证或未验证状态。这取决于您的工作流偏好。例如,如果您的团队倾向于假设发现项已验证,除非被证明并非如此,则可以将此字段设置为 True。
- 如果您想在测试中包含这些详细信息,可以指定版本、分支标签、提交哈希、构建 ID、服务。
- 还可以指定源代码管理 URI。该表单选项必须是有效的 URI。
- 分组依据: 如果您想根据此文件创建发现项分组,可以在此处指定分组方式。
关闭旧发现项
导入扫描时,您可以自动关闭在新报告中已不再出现的、来自先前扫描的发现项。在界面中勾选 关闭旧发现项 复选框,或在 API 中设置 close_old_findings: true 即可启用此功能。
范围:测试活动 vs. 产品
默认情况下,close_old_findings 会在同一测试活动内关闭相同扫描类型的发现项。DefectDojo Pro 增加了第二个选项——在此产品内关闭旧发现项——将范围扩大到整个产品中相同扫描类型的所有发现项,无论它们属于哪个测试活动。
| Option | UI checkbox | API parameter | Scope |
|---|---|---|---|
| 关闭旧发现项(测试活动范围) | 关闭旧发现项 | close_old_findings: true | 同一测试活动 |
| 关闭旧发现项(产品范围) | 在此产品内关闭旧发现项 | close_old_findings_product_scope: true | 整个产品 |
close_old_findings_product_scope 需要同时启用 close_old_findings。若在未启用 close_old_findings 的情况下设置 close_old_findings_product_scope,将不会产生任何效果。
注意:
close_old_findings_product_scope仅适用于导入(/import-scan)端点,对重新导入(/reimport-scan)端点没有影响,后者的范围始终限制在当前测试内。
系统同样会遵循 service 字段:只有 service 值相同(或在导入时均未指定 service 值)的发现项才会被视为可关闭对象。
无分类功能的扫描器:“不要重新激活”字段
有些扫描器的报告中可能不包含分类信息(例如 tfsec)。它们只是扫描代码或依赖项、标记问题并返回全部结果,而不管某个漏洞是否已经过分类处理。
为处理这种情况,DefectDojo 在上传报告时(以及在重新导入 API 中)也提供了“不要重新激活”复选框,这样您就可以将 DefectDojo 作为分类的权威来源,而不是在每次导入/重新导入时都重新激活已分类的发现项。
使用扫描完成日期(API:scan_date)字段
DefectDojo 支持大量的扫描器报告,但并非所有报告都包含对用户而言最重要的信息。scan_date 字段是一项灵活的智能功能,允许用户设置给定扫描报告的完成日期,并将其应用到所有导入的发现项上。此字段并非必填,但其默认值为导入日期(即请求被处理并返回成功响应的时间)。
以下是使用此字段的几种情况:
- 报告未设置日期,且导入时未设置
scan_date- 发现项日期将采用
scan_date的默认值
- 发现项日期将采用
- 报告设置了日期,且导入时未设置
scan_date- 发现项日期将采用报告设置的日期
- 报告未设置日期,且导入时设置了
scan_date- 发现项日期将采用用户为
scan_date设置的值
- 发现项日期将采用用户为
- 报告设置了日期,且导入时设置了
scan_date- 发现项日期将采用用户为
scan_date设置的值
- 发现项日期将采用用户为