# 安全模型
> Hugo 的安全边界、运行时与依赖安全，以及模板信任模型。
- 官方英文原文：https://gohugo.io/about/security/
- 本页规范地址：https://hugozh.cn/about/security/
- 最近更新：2026-10-02
- 最后提交：912b1d3 chore(site): 添加 static/CNAME（hugozh.cn），供 GitHub Pages 等平台绑定自定义域名
- 站点：Hugo 中文文档（https://hugozh.cn/）· 社区维护的非官方中文翻译，如有出入以官方英文原文为准

---
## 安全边界

- `layouts` 中的模板是可信的。
- `archetypes`、`assets`、`resources`、`data`、`i18n` 和 `static` 中的资源是可信的。
- `content` 中的内容，以及由内容适配器在 `content` 中生成的内容，是不可信的；唯一例外是启用内联短代码时。对于内容适配器，这一范围仅限于适配器的输出结果。
- 开发服务器 `hugo server` 及其 livereload 脚本是可信的，仅用于**本地**开发。
- Hugo 没有线上生产服务器；任何导致构建失败的畸形输入（例如格式错误的内容前置元数据）都不被定义为拒绝服务（DoS）。这也包括触发运行时错误的输入，例如 `fatal error: stack overflow`；这类问题请作为[缺陷](https://github.com/gohugoio/hugo/issues)报告。

## 运行时安全

Hugo 生成的是静态网站：最终输出直接在浏览器中运行，并与所集成的各类 API 交互。但在开发和构建站点期间，`hugo` 可执行文件本身就是运行时环境。

保障运行时安全是一项复杂的任务。Hugo 通过稳健的沙箱方案和带默认保护的严格安全策略来应对，主要特性包括：

- 虚拟文件系统：Hugo 使用虚拟文件系统限制文件访问。只有主项目（而非外部组件）可以访问项目根目录之外的文件或目录。
- 只读访问：用户自定义组件对文件系统只有只读权限，防止意外修改。
- 受控的外部二进制文件：Hugo 会为 Asciidoctor 支持等功能使用外部二进制文件，但这些文件经过严格预定义并带有特定参数，且默认禁用。安全策略中说明了这些限制。
- 不执行任意命令：为降低风险，Hugo 有意不实现那些允许用户执行任意操作系统命令的通用函数。
- 务实的默认值：默认安全策略旨在平衡安全性与可用性，让常见工作流开箱即用，同时把更敏感的能力留作显式启用。这些默认值可能在今后的版本中收紧，但每个项目最终有责任审阅策略，并按自身的信任模型与需求进行调整。

沙箱与严格默认值的这种组合，有效降低了 Hugo 构建过程中潜在的安全漏洞。

## 依赖安全

Hugo 使用 Go 模块管理依赖，并编译为静态二进制文件。Go 模块会生成 `go.sum` 文件，这是一项关键的安全特性：该文件像数据库一样，存储所有依赖（包括间接引入的传递依赖）的预期加密校验和。

扩展 Go 模块功能的 Hugo 模块同样会生成 `go.sum` 文件。为确保依赖完整性，请把这个 `go.sum` 文件提交到版本控制中。如果 Hugo 在构建过程中检测到校验和不匹配，构建就会失败，这表明可能存在篡改项目依赖的尝试。

## Web 应用安全

Hugo 的安全理念植根于既有安全标准，主要对齐 OWASP 定义的威胁。对于 HTML 输出，Hugo 遵循明确的信任模型：假设模板与配置的作者（即开发者）可信，而提供给这些模板的数据则被视为不可信。这一区分对理解 Hugo 如何处理潜在安全风险至关重要。

为避免开发者确知安全的数据被意外转义，Hugo 提供 `safe` 系列函数，例如 `safe.HTML`。这些函数允许开发者显式把数据标记为可信，从而绕过默认的转义机制；当数据由可靠来源生成或取得时，这一点很重要。但存在一个例外：启用内联短代码后，您即隐含地信任了短代码中的逻辑，以及内容文件中包含的数据。

需要记住的是，Hugo 是静态站点生成器。这一架构选择消除了动态用户输入带来的复杂性与漏洞，从而显著缩小攻击面：与动态网站不同，Hugo 生成静态 HTML 文件，降低了实时攻击的风险。在内容方面，Hugo 默认的 Markdown 渲染器已配置为净化潜在不安全的内容，可移除或转义潜在恶意的代码或脚本；如果您对内容来源的安全性有很高信心，也可以重新配置这一设置。

本质上，Hugo 通过在开发者与数据之间建立清晰的信任边界来优先保证输出安全：默认情况下偏向谨慎，净化潜在不安全的内容并转义数据；开发者可以通过 `safe` 系列函数和配置设置调整这些默认行为，但必须清楚理解由此带来的安全影响。Hugo 的静态站点生成模式消除了动态漏洞，进一步强化了它的安全态势。

## 配置

上述安全策略集中在 `security` 配置分区中，例如外部二进制文件在何种条件下可以被调用。上游文档把详细设置放在 `/configuration/security/` 页面；本站配置相关的入门内容见[配置 Hugo](/configuration/)。

