安全模式

Asciidoctor 提供安全级别,用于控制文档处理期间属性、包含指令、宏和脚本的读写访问。每个级别都包含先前安全级别中启用的限制。

安全假设

Asciidoctor 的安全模式主要关注处理器允许执行的操作。安全模式不提供全面的安全框架。特别是,没有安全模式可以限制作者可以传递到输出文档的内容类型。换句话说,安全模式设置不提供清理输出的方法。

Asciidoctor 执行合理的转义,允许作者安全地输入文本,但不限制通过直通块或自定义替换包含在输出中的内容。此策略的原因是我们假设如果 HTML 必须直接嵌入到网页中,文档将通过清理器进行处理,而 GitHub 和 GitLab 所做的正是如此。这种后处理(可以使用后处理器扩展完成)最好由单独的工具处理,因为需要考虑许多排列组合,只有单独的工具才知道为特定情况应用哪些限制。

可以在 CLIAPI 中设置安全模式。您还可以 根据当前安全模式启用或禁用内容

UNSAFE

UNSAFE 安全模式级别禁用 Asciidoctor 强制执行的任何安全功能。Ruby 仍受其自身限制。

这是 CLI 的默认安全模式。其整数值为 0

SAFE

SAFE 安全模式级别阻止访问位于源文件父目录之外的文件。包含指令(include::[])已启用,但包含文件的路径必须在父目录内。此模式允许将资产(如样式表)嵌入文档中。

其整数值为 1

SERVER

SERVER 安全模式级别禁止文档设置会影响文档转换的属性。此级别会将 docfile 修剪为其相对路径,并阻止文档

  • 设置 source-highlighterdoctypedocinfobackend

  • 查看 docdir(因为它可能会泄露有关主机文件系统的//信息//)

它允许 iconslinkcss

其整数值为 10

SECURE

SECURE 安全模式级别禁止文档尝试从文件系统读取文件并将其内容包含在文档中。此外,它

  • 禁用图标

  • 禁用包含指令(include::[]

  • 无法从 URI 检索数据

  • 阻止访问样式表和 JavaScript 文件

  • 将后端设置为 html5

  • 禁用 docinfo 文件

  • 禁用 data-uri

  • 禁用 SVG 的交互式(opts=interactive)和内联(opts=inline)模式

  • 禁用 docdirdocfile(因为它们可能会泄露有关//主机//文件系统的//信息//)

  • 禁用源代码高亮

Asciidoctor 扩展根据是否遵守安全模式设置,仍可能将内容嵌入文档中。

这是 API 的默认安全模式。其整数值为 20

GitHub 使用 SECURE 模式处理 AsciiDoc 文件。