safe.CSS
语法
safe.CSS INPUT
返回值
template.CSS
别名
safeCSS
简介
Hugo 使用 Go 的 text/template 和 html/template 包。
text/template 包实现用于生成文本输出的数据驱动模板,而 html/template 包实现用于生成安全防范代码注入的 HTML 输出的数据驱动模板。
默认情况下,Hugo 在渲染 HTML 文件时使用 html/template 包。
为了生成安全防范代码注入的 HTML 输出,html/template 包会在某些上下文中转义字符串。
用法
使用 safe.CSS
函数来封装匹配以下任何内容的已知安全内容:
- CSS3 样式表产生式,例如
p { color: purple }
。 - CSS3 规则产生式,例如
a[href=~"https:"].foo#bar
。 - CSS3 声明产生式,例如
color: red; margin: 2px
。 - CSS3 值产生式,例如
rgba(0, 0, 255, 127)
。
使用此类型存在安全风险:封装的内容应来自受信任的来源,因为它将原封不动地包含在模板输出中。
有关详细信息,请参阅 Go 文档。
示例
没有安全声明
{{ $style := "color: red;" }}
<p style="{{ $style }}">foo</p>
Hugo 将以上内容渲染为
<p style="ZgotmplZ">foo</p>
要将字符串声明为安全
{{ $style := "color: red;" }}
<p style="{{ $style | safeCSS }}">foo</p>
Hugo 将以上内容渲染为
<p style="color: red;">foo</p>