Skip to content

Commit 226c357

Browse files
authored
Merge pull request #963 from Thorium/security
Some html encodes added (to prevent XSS)
2 parents 3e55246 + ffbbcd6 commit 226c357

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/FSharp.Formatting.Markdown/HtmlFormatting.fs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ let rec internal formatSpan (ctx: FormattingContext) span =
7676
// use mathjax grammar, for detail, check: http://www.mathjax.org/
7777
ctx.Writer.Write("<span class=\"math\">\\(" + (htmlEncode body) + "\\)</span>")
7878

79-
| AnchorLink(id, _) -> ctx.Writer.Write("<a name=\"" + id + "\">&#160;</a>")
79+
| AnchorLink(id, _) -> ctx.Writer.Write("<a name=\"" + htmlEncodeQuotes id + "\">&#160;</a>")
8080
| EmbedSpans(cmd, _) -> formatSpans ctx (cmd.Render())
8181
| Literal(str, _) -> ctx.Writer.Write(str)
8282
| HardLineBreak(_) -> ctx.Writer.Write("<br />" + ctx.Newline)
@@ -181,7 +181,8 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
181181

182182
if ctx.GenerateHeaderAnchors then
183183
let anchorName = formatAnchor ctx spans
184-
ctx.Writer.Write(sprintf """<a name="%s" class="anchor" href="#%s">""" anchorName anchorName)
184+
let safeAnchorName = htmlEncodeQuotes anchorName
185+
ctx.Writer.Write(sprintf """<a name="%s" class="anchor" href="#%s">""" safeAnchorName safeAnchorName)
185186
formatSpans ctx spans
186187
ctx.Writer.Write "</a>"
187188
else
@@ -210,7 +211,7 @@ let rec internal formatParagraph (ctx: FormattingContext) paragraph =
210211
if String.IsNullOrWhiteSpace(language) then
211212
ctx.Writer.Write(sprintf "<pre><code>")
212213
else
213-
let langCode = sprintf "language-%s" language
214+
let langCode = sprintf "language-%s" (htmlEncodeQuotes language)
214215
ctx.Writer.Write(sprintf "<pre><code class=\"%s\">" langCode)
215216

216217
ctx.Writer.Write(htmlEncode code)

0 commit comments

Comments
 (0)