hugo/tpl
Bjørn Erik Pedersen f4389e48ce
Add some basic security policies with sensible defaults
This ommmit contains some security hardening measures for the Hugo build runtime.

There are some rarely used features in Hugo that would be good to have disabled by default. One example would be the "external helpers".

For `asciidoctor` and some others we use Go's `os/exec` package to start a new process.

These are a predefined set of binary names, all loaded from `PATH` and with a predefined set of arguments. Still, if you don't use `asciidoctor` in your project, you might as well have it turned off.

You can configure your own in the new `security` configuration section, but the defaults are configured to create a minimal amount of site breakage. And if that do happen, you will get clear instructions in the loa about what to do.

The default configuration is listed below. Note that almost all of these options are regular expression _whitelists_ (a string or a slice); the value `none` will block all.

```toml
[security]
  enableInlineShortcodes = false
  [security.exec]
    allow = ['^dart-sass-embedded$', '^go$', '^npx$', '^postcss$']
    osEnv = ['(?i)^(PATH|PATHEXT|APPDATA|TMP|TEMP|TERM)$']

  [security.funcs]
    getenv = ['^HUGO_']

  [security.http]
    methods = ['(?i)GET|POST']
    urls = ['.*']
```
2021-12-16 09:40:22 +01:00
..
cast Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
collections Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
compare Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
crypto Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
data Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
debug Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
encoding Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
fmt Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
hugo Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
images Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
inflect Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
internal Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
js Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
lang Fix description of lang.FormatNumberCustom 2021-11-01 18:54:43 +01:00
math Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
openapi/openapi3 Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
os Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
partials Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
path tpl/path: Add path.Clean 2021-10-05 16:15:10 +02:00
reflect Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
resources Allow user to handle/ignore errors in resources.Get 2021-12-10 11:10:41 +01:00
safe Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
site Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
strings Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
templates Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
time tpl/time: Use configured location when date passed to Format is string 2021-10-30 16:09:38 +02:00
tplimpl Remove empty href element from pagination template 2021-12-02 09:14:30 +01:00
transform Add some basic security policies with sensible defaults 2021-12-16 09:40:22 +01:00
urls Fix error handling for the time func alias 2021-08-01 13:39:30 +02:00
template.go all: Fix minor typos 2020-12-16 12:11:32 +01:00
template_info.go Add render template hooks for links and images 2019-12-18 11:44:40 +01:00
template_test.go Create lightweight forks of text/template and html/template 2019-12-12 09:59:34 +01:00