[chore] improve opengraph descripiton tag (#1550)

This changes parseDescription to properly encode things to be safe for
usage without removing things like backslashes that may be relevant.

* text.SanitizePlaintext already calls html.UnescapeString so we don't
  have to do that
* Replace \n with space early
* Remove duplicate white-space by splitting on fields and joining
* HTML-escape the string we have
* For extra certainty, encode the backslash as \

Fixes #1549
This commit is contained in:
Daenney
2023-02-22 22:36:18 +01:00
committed by GitHub
parent b6fbdc66c1
commit 074f352709
2 changed files with 54 additions and 4 deletions

View File

@ -134,11 +134,11 @@ func parseTitle(account *apimodel.Account, accountDomain string) string {
// parseDescription returns a string description which is
// safe to use as a template.HTMLAttr inside templates.
func parseDescription(in string) string {
i := html.UnescapeString(in)
i = text.SanitizePlaintext(i)
i = strings.ReplaceAll(i, "\"", "'")
i = strings.ReplaceAll(i, `\`, "")
i := text.SanitizePlaintext(in)
i = strings.ReplaceAll(i, "\n", " ")
i = strings.Join(strings.Fields(i), " ")
i = html.EscapeString(i)
i = strings.ReplaceAll(i, `\`, "\")
i = trim(i, maxOGDescriptionLength)
return `content="` + i + `"`
}