Allow limited set of markdown in title rendering (#1977)
authorcreesch <creesch@users.noreply.github.com>
Wed, 26 Jul 2023 17:41:57 +0000 (19:41 +0200)
committerGitHub <noreply@github.com>
Wed, 26 Jul 2023 17:41:57 +0000 (13:41 -0400)
src/shared/markdown.ts

index 33afd716227ad8306f3843d4348d63578d17bd32..142000d897a7622f0d1a605d38c1ef775a6ac752 100644 (file)
@@ -23,6 +23,14 @@ export let md: MarkdownIt = new MarkdownIt();
 
 export let mdNoImages: MarkdownIt = new MarkdownIt();
 
+// Zero disables all rules.
+// Only explicitly allow a limited set of rules safe for use in post titles.
+export const mdLimited: MarkdownIt = new MarkdownIt("zero").enable([
+  "emphasis",
+  "backticks",
+  "strikethrough",
+]);
+
 export const customEmojis: EmojiMartCategory[] = [];
 
 export let customEmojisLookup: Map<string, CustomEmojiView> = new Map<
@@ -43,7 +51,7 @@ export function mdToHtmlNoImages(text: string) {
 }
 
 export function mdToHtmlInline(text: string) {
-  return { __html: md.renderInline(text) };
+  return { __html: mdLimited.renderInline(text) };
 }
 
 const spoilerConfig = {