全局搜索 (Pro)

DefectDojo Pro 提供全局搜索功能,可通过顶部导航栏中的单个搜索框查找您的发现项及相关对象。该功能基于原生 Postgres 全文搜索,支持模糊、容错匹配,因此即使记不清确切措辞,您也能找到所需对象。

执行搜索

  • 顶部搜索框 —— 点击顶部导航栏中的 Search 框并开始输入。输入时,下拉列表会预览按对象类型分组的最匹配结果,每种类型旁边标有数量,底部还有一个 See all N results 链接。
  • 完整结果页面 —— 按 Enter 键,或点击 See all N results,即可打开完整结果页面。这是一个包含所有对象类型全部匹配项的单一表格,可排序、可筛选。

搜索结果始终限定在您有权查看的范围内——全局搜索绝不会显示您原本无权访问的对象。(发现项模板是唯一的例外:与 DefectDojo 中其他地方一样,任何已登录用户都可以看到它们。)

可搜索的内容

全局搜索涵盖以下对象类型:

Object typeNotes
Findings(发现项)
Assets(资产)(即产品)
Organizations(组织)(即产品类型)
Engagements(测试活动)
Tests(测试)
Endpoints(端点) Locations(位置)取决于您的实例使用哪一种——启用了位置功能的实例搜索的是位置,其余实例搜索的是端点。
Finding Templates(发现项模板)
Technologies(技术)
Vulnerability IDs(漏洞 ID)例如 CVE

对于大多数类型,搜索会匹配对象的名称/标题和描述。对于发现项、资产、测试活动和测试,搜索还会匹配标签(按前缀匹配)。漏洞 ID 则直接匹配 ID 值本身。

查询语法

自由文本

输入任意关键字即可一次性搜索所有内容。匹配结果按相关性排序,标题/名称命中排在描述命中之前。模糊匹配(见下文)意味着即使术语不完全精确,也依然能够匹配。

引号短语

用双引号将短语括起来可使其保持为一个整体——"space inside" 会被视为一个词条,而不是两个关键字。

运算符

在词条前加上运算符前缀(operator:value)可缩小搜索范围。支持的运算符如下:

OperatorWhat it does
finding: product: engagement: test: template: technology:将搜索限定在单一对象类型内,并搜索该值(例如 finding:sqli)。
id:按数字 ID 查找发现项(例如 id:12345)。
endpoint:查找端点/位置主机包含该值的发现项。
vulnerability_id:精确匹配漏洞 ID。支持逗号分隔的列表,也可重复使用(例如 vulnerability_id:CVE-2020-1234,CVE-2018-7489)。
tag: / tags:按标签匹配对象。tag: 按子字符串匹配单个标签;tags: 匹配列表中的任意标签。
test-tag: engagement-tag: product-tag:(及其复数形式 -tags)按相关测试、测试活动或资产上的标签匹配,而非对象本身的标签。
not-tag: not-tags:(及 not-…-tag 关系变体)对上述任一标签运算符取反,以排除匹配项。

您可以在同一查询中将运算符与自由文本关键字结合使用。

模糊匹配

对于三个字符或以上的查询,全局搜索还会进行三元组(词语相似度)匹配。这可以容忍拼写错误,并能在较长的、以点号或连字符分隔的值内部找到相应词条——例如,internal 可匹配 api.internal.example.com

筛选和排序结果页面

在完整结果页面上,各列可以独立于查询文本进行筛选和排序——可按对象类型严重程度标题上下文筛选,并可按任意列排序。这些功能与上文的 operator: 语法是分开的,作用于合并后的结果表格。

结果数量限制

  • 完整结果页面分页显示(默认每页 25 行)。
  • 每次搜索中,每种对象类型最多贡献一定数量的匹配项——默认为 100 条。当实际匹配数超过显示数量时,结果会被标记为已截断;请缩小查询范围以查看最相关的命中结果。
  • 顶部搜索框的下拉列表会显示一个较小的预览(每种类型的前几个匹配项)以及总数量,因此 See all N results 始终反映真实的总数。