test: allowlist_hosts must reject dot-only entries (PR #53 rework)
A bare "." entry becomes a HasSuffix suffix pattern that matches any upstream written in FQDN trailing-dot form (evil.com.), effectively disabling URL signing with one character. Failing test first, fix follows.
This commit is contained in:
@@ -414,6 +414,35 @@ func TestExplicitlyEmptyDBURLAbortsStartup(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestAllowlistHostsRejectsDotOnlyEntries verifies that entries with no
|
||||
// hostname labels are rejected. The allowlist matcher treats a leading
|
||||
// dot as a suffix pattern, so a bare "." entry would match any upstream
|
||||
// host written in FQDN trailing-dot form (e.g. evil.com.) and
|
||||
// effectively disable URL signing with a single character.
|
||||
func TestAllowlistHostsRejectsDotOnlyEntries(t *testing.T) {
|
||||
signingKeyLine := "signing_key: " + validTestSigningKey + "\n"
|
||||
|
||||
for _, entry := range []string{".", ".."} {
|
||||
t.Run(entry, func(t *testing.T) {
|
||||
yamlContent := signingKeyLine +
|
||||
"allowlist_hosts:\n - \"" + entry + "\"\n"
|
||||
|
||||
c, err := configFromYAML(t, yamlContent)
|
||||
if err == nil {
|
||||
t.Fatalf("allowlist entry %q must abort startup, got config: %+v",
|
||||
entry, c)
|
||||
}
|
||||
|
||||
t.Logf("got expected error: %v", err)
|
||||
|
||||
if !strings.Contains(err.Error(), "allowlist_hosts") {
|
||||
t.Errorf("error %q does not name the offending key allowlist_hosts",
|
||||
err.Error())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnknownTopLevelKeyAbortsStartup(t *testing.T) {
|
||||
yamlContent := `signing_key: ` + validTestSigningKey + `
|
||||
whitelist_hosts:
|
||||
|
||||
Reference in New Issue
Block a user