diff --git a/package.json b/package.json index e3f5bfe36..0841e1043 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "adm-zip": "^0.5.16", "apache-arrow": "^18.1.0", "docx": "^9.0.2", + "dompurify": "^3.2.3", "electron-log": "^5.1.5", "electron-store": "^8.2.0", "electron-updater": "^6.3.9", diff --git a/src/renderer/src/pages/home/Markdown/CodeBlock.tsx b/src/renderer/src/pages/home/Markdown/CodeBlock.tsx index 63f6b1a23..e88bb0477 100644 --- a/src/renderer/src/pages/home/Markdown/CodeBlock.tsx +++ b/src/renderer/src/pages/home/Markdown/CodeBlock.tsx @@ -3,6 +3,7 @@ import CopyIcon from '@renderer/components/Icons/CopyIcon' import { useSyntaxHighlighter } from '@renderer/context/SyntaxHighlighterProvider' import { useSettings } from '@renderer/hooks/useSettings' import React, { memo, useEffect, useRef, useState } from 'react' +import DOMPurify from 'dompurify' import { useTranslation } from 'react-i18next' import styled from 'styled-components' @@ -37,6 +38,7 @@ const ExpandButton: React.FC<{ ) } +const ALLOWED_TAGS = ['sub'] // 允许的HTML标签 const CodeBlock: React.FC = ({ children, className }) => { const match = /language-(\w+)/.exec(className || '') @@ -133,7 +135,15 @@ const CodeBlock: React.FC = ({ children, className }) => { {language === 'html' && children?.includes('') && } ) : ( - {children} + ) }