Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prefer explicit rules over regexp #182

Merged
merged 1 commit into from
Jul 18, 2023
Merged

Prefer explicit rules over regexp #182

merged 1 commit into from
Jul 18, 2023

Conversation

KN4CK3R
Copy link
Contributor

@KN4CK3R KN4CK3R commented Jul 18, 2023

#175 introduced a potential dangerous change. If a user registers the regexp .+ for scheme validation (as written in the comment) to allow all possible schemes, a link like <a href="javascript:..."> is valid too. The Go regexp module does not implement negative lookaheads, so you can't write "all but xyz" ((?!javascript|vbscript)).

This PR moves the regexp check a little bit down to be only executed if there was no other explicit scheme registration was found. So now

p.AllowURLSchemesMatching(regexp.MustCompile(`.+`))
p.AllowURLSchemeWithCustomPolicy("javascript", func(*url.URL) bool {
	return false
})

will allow every scheme but javascript.

An alternative would be to drop AllowURLSchemesMatching again and add methods DisallowURLSchemes and DisallowURLSchemeWithCustomPolicy.

@grafana-dee
Copy link
Contributor

Thank you, this is an excellent catch and a great addition.

@grafana-dee grafana-dee merged commit 50149cc into microcosm-cc:main Jul 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants