]> Untitled Git - lemmy-ui.git/commitdiff
Alternative way to sanitize isoData (#1129)
authorNutomic <me@nutomic.com>
Fri, 9 Jun 2023 12:17:02 +0000 (14:17 +0200)
committerGitHub <noreply@github.com>
Fri, 9 Jun 2023 12:17:02 +0000 (08:17 -0400)
* Alternative way to sanitize isoData

* use split/join instead of replaceAll

* Use sanitize, then restore > chars for markdown render

src/server/index.tsx
src/shared/utils.ts

index f96901b980b07cd5c2f614edcf52a84257ae16bb..1fab13d15a23c199420d0169d04ae0a73df6f287 100644 (file)
@@ -9,6 +9,7 @@ import IsomorphicCookie from "isomorphic-cookie";
 import { GetSite, GetSiteResponse, LemmyHttp, Site } from "lemmy-js-client";
 import path from "path";
 import process from "process";
+import sanitize from "sanitize-html";
 import serialize from "serialize-javascript";
 import sharp from "sharp";
 import { App } from "../shared/components/app/app";
@@ -25,7 +26,6 @@ import {
   favIconUrl,
   initializeSite,
   isAuthPath,
-  md,
 } from "../shared/utils";
 
 const server = express();
@@ -348,9 +348,7 @@ async function createSsrHtml(root: string, isoData: IsoDataOptionalSite) {
   <!DOCTYPE html>
   <html ${helmet.htmlAttributes.toString()} lang="en">
   <head>
-  <script>window.isoData = ${md.utils.escapeHtml(
-    JSON.stringify(isoData)
-  )}</script>
+  <script>window.isoData = ${sanitize(JSON.stringify(isoData))}</script>
   <script>window.lemmyConfig = ${serialize(config)}</script>
 
   <!-- A remote debugging utility for mobile -->
index 504bfcb6fb437924ccdf0abaaf8b4ec633debae3..2934268d178d68ccb01bd9bb1bd3d6c4650de601 100644 (file)
@@ -206,11 +206,13 @@ export function hotRank(score: number, timeStr: string): number {
 }
 
 export function mdToHtml(text: string) {
-  return { __html: md.render(text) };
+  // restore '>' character to fix quotes
+  return { __html: md.render(text).split("&gt;").join(">") };
 }
 
 export function mdToHtmlNoImages(text: string) {
-  return { __html: mdNoImages.render(text) };
+  // restore '>' character to fix quotes
+  return { __html: mdNoImages.render(text).split("&gt;").join(">") };
 }
 
 export function mdToHtmlInline(text: string) {