

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Amazon Inspector SBOM 生成器中处理未解析或非标准版本引用
<a name="sbom-generator-unresolved-non-standard-version-reference"></a>

 Amazon Inspector SBOM 生成器可通过直接从源文件中识别依赖关系来查找和解析系统中受支持的构件。它不是一个程序包管理器，不会解析版本范围、根据动态引用推断版本或处理注册表查询。它仅会收集项目源构件中定义的依赖关系。在许多情况下，程序包清单中的依赖关系（例如 `package.json`、`pom.xml` 或 `requirements.txt`）是使用未解析或基于范围的版本指定的。本主题包含一些示例，展示了这些依赖关系可能的外观。

## 建议
<a name="w2aac37c35b5"></a>

 Amazon Inspector SBOM 生成器会从源构件中提取依赖关系，但不会解析或解释版本范围或动态引用。为了更准确地扫描漏洞 SBOMs，我们建议在项目依赖项中使用已解析的语义版本标识符。

## Java
<a name="w2aac37c35b7"></a>

 对于 Java，Maven 项目可以使用版本范围来在 `pom.xml` 文件中定义依赖关系。

```
<dependency>
    <groupId>org.inspector</groupId>
    <artifactId>inspector-api</artifactId>
    <version>(,1.0]</version>
</dependency>
```

 该范围指定任何不超过 1.0 的版本均可接受。但是，如果某个版本不是已解析的版本，则 Amazon Inspector SBOM 生成器不会收集该版本，因为无法将其映射到特定发行版。

## JavaScript
<a name="w2aac37c35b9"></a>

 对于 JavaScript，`package.json` 文件可以包含类似于以下内容的版本范围：

```
"dependencies": {
    "ky": "^1.2.0",
    "registry-auth-token": "^5.0.2",
    "registry-url": "^6.0.1",
    "semver": "^7.6.0"
}
```

 `^` 运算符指定大于等于指定版本的任何版本均可接受。但是，如果指定的版本不是已解析的版本，则 Amazon Inspector SBOM 生成器将不会收集该版本，因为这样做可能会导致漏洞检测期间出现误报。

## Python
<a name="w2aac37c35c11"></a>

 对于 Python，`requirements.txt` 文件可以包含带有布尔表达式的条目。

```
requests>=1.0.0
```

 `>=` 运算符指定任何大于或等于 `1.0.0` 的版本均可接受。由于此特定表达式未指定确切的版本，因此 Amazon Inspector SBOM 生成器无法可靠地收集用于漏洞分析的版本。

 Amazon Inspector SBOM 生成器不支持非标准或不确定的版本标识符，例如测试版、最新版或快照。

```
pkg:maven/org.example.com/testmaven@1.0.2%20Beta-RC-1_Release
```

**注意**  
 使用非标准后缀（例如 Beta-RC-1\_Release）不符合标准语义版本控制，并且无法在 Amazon Inspector 检测引擎中评估其漏洞。