使用 URL (Pro)

URL 位置在功能上取代了旧版的端点模型。它们存储着您熟悉的相同 URL 结构字段——protocolhostportpathqueryfragment——并发挥着相同的作用:标识某个 Web 应用发现项位于何处

本页介绍在日常使用 URL 位置时会发生哪些变化、新增的界面入口,以及应使用哪些 API 端点来代替旧版端点 API。

URL 子类型

每个 URL 都是一个位置。这意味着 URL 同时具备:

  • 结构化的 URL 字段(protocoluser_infohostportpathqueryfragment,以及用于去重的 hash)。
  • 共享的位置字段(location_type="url"、用于显示和搜索的规范 location_value 字符串、标签、继承标签、元数据,以及指向资产和发现项的引用链接)。

当您创建或上传一个 URL 时,DefectDojo 会将其解析为结构化字段,并在一次事务中同时写入 URL 记录及其父级位置记录。URL 去重采用结构化字段的精确匹配——只有当所有组成部分都匹配时,两个 URL 才会被视为相同,同时会应用标准的默认端口归并规则(http://example.com:80/http://example.com/ 会解析为同一个 URL)。

在 Pro 版界面中

启用位置功能后,导航栏会提供以下选项:

  • 位置 / 全部 —— 列出 URL 和依赖项两种子类型下的所有位置,可按类型、状态、资产、发现项或标签进行筛选。
  • 位置 / URL —— 仅显示 URL 位置的限定列表,是与旧版端点页面最为接近的对应功能。
  • 新建 URL —— 用于创建单个 URL 的表单,包含结构化字段、标签以及可选的资产/发现项关联。
  • 资产上的位置 —— 在任意资产中,位置标签页会显示附加在该资产上的 URL 和依赖项,并提供状态统计和快捷操作。

旧版端点界面中的常见工作流程得以保留:

  • 批量状态更新。 选择多个 URL 位置,一次性为其发现项引用应用某个状态(活动、已缓解、误报、风险已接受、超出范围)。
  • 将现有 URL 添加到资产。 在资产的位置标签页中使用添加现有项,即可关联系统中已存在的 URL,而不必创建重复项。
  • 标签。 应用于某个 URL 位置的标签,会作为继承标签传播到引用它的发现项上,与此前端点标签的行为方式相同。

状态模型

URL 位置使用与所有其他位置相同的单一状态标签:

状态含义
活动该 URL 上的发现项处于开放状态。
已缓解该 URL 上的发现项已完成修复。
误报该发现项在此 URL 上并非真实漏洞。
风险已接受该发现项在此 URL 上已被确认但接受其风险。
超出范围该 URL 已被排除在测试活动范围之外。

请注意,旧版的端点状态模型允许多个标志同时生效(例如 mitigated=Truefalse_positive=True)。位置在同一时刻只强制保留一个状态。如果您是从端点迁移而来,系统会保留最具体的标志(参见从端点迁移中的映射表)。

资产引用使用更简单的状态:仅有活动已缓解,因为资产级别的状态不需要那么详细的审计信息。

REST API

请使用以下端点来代替旧版端点 API:

任务端点
列出 URLGET /api/v2/urls/
创建 URLPOST /api/v2/urls/
更新 URL 的标签或元数据PATCH /api/v2/urls/{id}/
列出所有位置(URL + 依赖项)GET /api/v2/location/?location_type=url
将 URL 关联到发现项POST /api/v2/location_findings/
将 URL 关联到资产POST /api/v2/location_Assets/
更新发现项关联的状态PATCH /api/v2/location_findings/{id}/
移除发现项关联DELETE /api/v2/location_findings/{id}/

/api/v2/urls/ 上的筛选条件包括结构化 URL 字段,以及 tag(s)has_tagsAsset,并支持按 hostAsset 或活动发现项数量排序。

旧版的 /api/v2/endpoints/ 端点仍通过兼容层提供读取流量的服务——关于保留了哪些内容以及该兼容层与原始行为的差异,请参见从端点迁移。对旧版端点的写入操作会返回 403,必须迁移到上述端点。

从扫描导入 URL

扫描器导入会自动创建 URL 位置。当解析器为某个发现项输出一个 URL 时(与此前输出端点的方式相同),导入器会:

  1. 查找结构化字段匹配的现有 URL,若不存在则创建一个。
  2. 创建一个发现项引用,将该发现项与该 URL 关联,状态为活动
  3. 创建(或复用)一个资产引用,使该 URL 也出现在其所属的父级资产下。

此前会创建端点的 DefectDojo 解析器均已更新,可在 Pro 版中自动创建位置。

行为差异之处

以下几个细微的行为变化值得注意:

  • 每个 URL/发现项组合仅有一个状态。 如上所述,多标志的 Endpoint_Status 模型已被归并为单一状态。原先独立切换各个标志的工作流程,现在需要选择一次单一的状态转换。
  • 标签位于位置上,而非 URL 上。 URL 子类型本身不携带独立的标签集合;标签属于其父级位置。通过 API 读取 URL 时,tags 字段来自 location.tags
  • 去重按规范化 URL 进行,而非按资产进行。 拥有相同 URL 的两个资产会共享同一个底层 URL 位置,并各自对其引用一次(每个资产各有一个资产引用)。这是有意为之的设计,正是它使得跨资产报告成为可能。
  • 发现项上的 endpoints 字段。 当该功能开启时,发现项 API 上的这个字段仍会返回记录,但这些记录是由 URL 位置映射而成,而非来自端点表。请将其视为只读字段,写入操作应改为通过 /api/v2/location_findings/ 进行。