全局搜索 (Pro)
DefectDojo Pro 提供全局搜索功能,可通过顶部导航栏中的单个搜索框查找您的发现项及相关对象。该功能基于原生 Postgres 全文搜索,支持模糊、容错匹配,因此即使记不清确切措辞,您也能找到所需对象。
执行搜索
- 顶部搜索框 —— 点击顶部导航栏中的 Search 框并开始输入。输入时,下拉列表会预览按对象类型分组的最匹配结果,每种类型旁边标有数量,底部还有一个 See all N results 链接。
- 完整结果页面 —— 按 Enter 键,或点击 See all N results,即可打开完整结果页面。这是一个包含所有对象类型全部匹配项的单一表格,可排序、可筛选。
搜索结果始终限定在您有权查看的范围内——全局搜索绝不会显示您原本无权访问的对象。(发现项模板是唯一的例外:与 DefectDojo 中其他地方一样,任何已登录用户都可以看到它们。)
可搜索的内容
全局搜索涵盖以下对象类型:
| Object type | Notes |
|---|---|
| Findings(发现项) | |
| Assets(资产) | (即产品) |
| Organizations(组织) | (即产品类型) |
| Engagements(测试活动) | |
| Tests(测试) | |
| Endpoints(端点) 或 Locations(位置) | 取决于您的实例使用哪一种——启用了位置功能的实例搜索的是位置,其余实例搜索的是端点。 |
| Finding Templates(发现项模板) | |
| Technologies(技术) | |
| Vulnerability IDs(漏洞 ID) | 例如 CVE |
对于大多数类型,搜索会匹配对象的名称/标题和描述。对于发现项、资产、测试活动和测试,搜索还会匹配标签(按前缀匹配)。漏洞 ID 则直接匹配 ID 值本身。
查询语法
自由文本
输入任意关键字即可一次性搜索所有内容。匹配结果按相关性排序,标题/名称命中排在描述命中之前。模糊匹配(见下文)意味着即使术语不完全精确,也依然能够匹配。
引号短语
用双引号将短语括起来可使其保持为一个整体——"space inside" 会被视为一个词条,而不是两个关键字。
运算符
在词条前加上运算符前缀(operator:value)可缩小搜索范围。支持的运算符如下:
| Operator | What 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 始终反映真实的总数。
下一页
筛选器索引