Hugo dynamic decide "unsafe" <!-- raw HTML 省略 -->
Hugo dynamic decide "unsafe" <!-- raw HTML omitted -->
我用goldmark
作为format。
而且我知道我可以编辑 config.toml 文件来停止关于 raw HTML omitted
和
的行为
[markup.goldmark.renderer]
unsafe = true
我的问题是,我可以在 front matter(而不是 config.toml
)中使用上面的设置吗?
例如,如果我有很多降价文件,我希望其中一个应用unsafe = true
而其他的不应用,是否可以?
如果不是,能否解释一下为什么在静态站点下需要特别区分,会不会因此而被攻击? (其实这才是我真正关心的,不然我很愿意直接把全域设置为开启不安全模式,让markdown更全面)。
回答问题:“不安全模式可以部分应用,即在 Hugo 的前面吗?”
不,不可能(也不应该)在 front matter 中定义 unsafeHTML。允许内容创建者覆盖 security model 会弄巧成拙。
如果您不确定将 unsafe 设置为 true 的风险,那么您可以将其设置为默认值 (false),然后使用 shortcode 来帮助您。例如,
我创建一个文件raw_html.html
layouts/shortcodes/raw_html.html
{{.Inner}}
my_demo.md
## bootstrap color
{{< raw_html >}}
<p class="p-3 mb-2 bg-primary text-white">.bg-primary</p>
<p class="p-3 mb-2 bg-secondary text-white">.bg-secondary</p>
{{< /raw_html >}}
## inside link
brabrabra {{<raw_html>}}<a name="my_color">nice color</a>{{</raw_html>}} foo foo
[go to nice-color](#my_color)
## table
| {{<raw_html>}}<div style="width:64px">name</div>{{</raw_html>}} | Description |
| ---- | ---- |
| xxxxx| OOOOO|
产出
<head> <!-- the head is extra code for getting the bootstrap style -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
</head>
<h2 id="bootstrap-color">bootstrap color</h2>
<p class="p-3 mb-2 bg-primary text-white">.bg-primary</p>
<p class="p-3 mb-2 bg-secondary text-white">.bg-secondary</p>
<h2 id="inside-link">inside link</h2>
<p>brabrabra <a name="my_color">nice color</a> foo foo</p>
<a href="#my_color">go to nice-color</a>
<h2 id="table">table</h2>
<table><thead><tr><th><div style="width:64px">name</div></th>
<th>Description</th></tr></thead>
<tbody><tr><td>xxxxx</td><td>OOOOO</td></tr></tbody>
</table>
我用goldmark
作为format。
而且我知道我可以编辑 config.toml 文件来停止关于 raw HTML omitted
和
[markup.goldmark.renderer]
unsafe = true
我的问题是,我可以在 front matter(而不是 config.toml
)中使用上面的设置吗?
例如,如果我有很多降价文件,我希望其中一个应用unsafe = true
而其他的不应用,是否可以?
如果不是,能否解释一下为什么在静态站点下需要特别区分,会不会因此而被攻击? (其实这才是我真正关心的,不然我很愿意直接把全域设置为开启不安全模式,让markdown更全面)。
回答问题:“不安全模式可以部分应用,即在 Hugo 的前面吗?”
不,不可能(也不应该)在 front matter 中定义 unsafeHTML。允许内容创建者覆盖 security model 会弄巧成拙。
如果您不确定将 unsafe 设置为 true 的风险,那么您可以将其设置为默认值 (false),然后使用 shortcode 来帮助您。例如,
我创建一个文件raw_html.html
layouts/shortcodes/raw_html.html
{{.Inner}}
my_demo.md
## bootstrap color
{{< raw_html >}}
<p class="p-3 mb-2 bg-primary text-white">.bg-primary</p>
<p class="p-3 mb-2 bg-secondary text-white">.bg-secondary</p>
{{< /raw_html >}}
## inside link
brabrabra {{<raw_html>}}<a name="my_color">nice color</a>{{</raw_html>}} foo foo
[go to nice-color](#my_color)
## table
| {{<raw_html>}}<div style="width:64px">name</div>{{</raw_html>}} | Description |
| ---- | ---- |
| xxxxx| OOOOO|
产出
<head> <!-- the head is extra code for getting the bootstrap style -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
</head>
<h2 id="bootstrap-color">bootstrap color</h2>
<p class="p-3 mb-2 bg-primary text-white">.bg-primary</p>
<p class="p-3 mb-2 bg-secondary text-white">.bg-secondary</p>
<h2 id="inside-link">inside link</h2>
<p>brabrabra <a name="my_color">nice color</a> foo foo</p>
<a href="#my_color">go to nice-color</a>
<h2 id="table">table</h2>
<table><thead><tr><th><div style="width:64px">name</div></th>
<th>Description</th></tr></thead>
<tbody><tr><td>xxxxx</td><td>OOOOO</td></tr></tbody>
</table>