Merge pull request 'disallow javascript: URI in the repository description' (#4896) from earl-warren/forgejo:wip-xss-repo-description into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4896 Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
This commit is contained in:
commit
ae85e285db
|
@ -179,6 +179,7 @@ func createDefaultPolicy() *bluemonday.Policy {
|
||||||
// repository descriptions.
|
// repository descriptions.
|
||||||
func createRepoDescriptionPolicy() *bluemonday.Policy {
|
func createRepoDescriptionPolicy() *bluemonday.Policy {
|
||||||
policy := bluemonday.NewPolicy()
|
policy := bluemonday.NewPolicy()
|
||||||
|
policy.AllowStandardURLs()
|
||||||
|
|
||||||
// Allow italics and bold.
|
// Allow italics and bold.
|
||||||
policy.AllowElements("i", "b", "em", "strong")
|
policy.AllowElements("i", "b", "em", "strong")
|
||||||
|
|
|
@ -84,12 +84,15 @@ func TestDescriptionSanitizer(t *testing.T) {
|
||||||
`<span class="emoji" aria-label="thumbs up">THUMBS UP</span>`, `<span class="emoji" aria-label="thumbs up">THUMBS UP</span>`,
|
`<span class="emoji" aria-label="thumbs up">THUMBS UP</span>`, `<span class="emoji" aria-label="thumbs up">THUMBS UP</span>`,
|
||||||
`<span style="color: red">Hello World</span>`, `<span>Hello World</span>`,
|
`<span style="color: red">Hello World</span>`, `<span>Hello World</span>`,
|
||||||
`<br>`, ``,
|
`<br>`, ``,
|
||||||
`<a href="https://example.com" target="_blank" rel="noopener noreferrer">https://example.com</a>`, `<a href="https://example.com" target="_blank" rel="noopener noreferrer">https://example.com</a>`,
|
`<a href="https://example.com" target="_blank" rel="noopener noreferrer">https://example.com</a>`, `<a href="https://example.com" target="_blank" rel="noopener noreferrer nofollow">https://example.com</a>`,
|
||||||
`<mark>Important!</mark>`, `Important!`,
|
`<mark>Important!</mark>`, `Important!`,
|
||||||
`<details>Click me! <summary>Nothing to see here.</summary></details>`, `Click me! Nothing to see here.`,
|
`<details>Click me! <summary>Nothing to see here.</summary></details>`, `Click me! Nothing to see here.`,
|
||||||
`<input type="hidden">`, ``,
|
`<input type="hidden">`, ``,
|
||||||
`<b>I</b> have a <i>strong</i> <strong>opinion</strong> about <em>this</em>.`, `<b>I</b> have a <i>strong</i> <strong>opinion</strong> about <em>this</em>.`,
|
`<b>I</b> have a <i>strong</i> <strong>opinion</strong> about <em>this</em>.`, `<b>I</b> have a <i>strong</i> <strong>opinion</strong> about <em>this</em>.`,
|
||||||
`Provides alternative <code>wg(8)</code> tool`, `Provides alternative <code>wg(8)</code> tool`,
|
`Provides alternative <code>wg(8)</code> tool`, `Provides alternative <code>wg(8)</code> tool`,
|
||||||
|
`<a href="javascript:alert('xss')">Click me</a>.`, `Click me.`,
|
||||||
|
`<a href="data:text/html,<script>alert('xss')</script>">Click me</a>.`, `Click me.`,
|
||||||
|
`<a href="vbscript:msgbox("xss")">Click me</a>.`, `Click me.`,
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(testCases); i += 2 {
|
for i := 0; i < len(testCases); i += 2 {
|
||||||
|
|
Loading…
Reference in New Issue