From e8a37dde364bb5487fe288e4f9d754079187ed57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20M=C3=BCller?= Date: Fri, 7 Aug 2026 15:11:19 +0300 Subject: [PATCH] fix: escape user text before innerHTML insertion in translation history/favorites (XSS) --- others/translate/app.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/others/translate/app.js b/others/translate/app.js index d0308f8..51eef60 100644 --- a/others/translate/app.js +++ b/others/translate/app.js @@ -11,6 +11,17 @@ let currentSynonyms = []; // 当前近义词列表 let selectedSynonym = null; // 选择的近义词 let translationQuality = 0; // 翻译质量评分 +// Escaped für die sichere Einfügung nutzergesteuerter Texte via innerHTML (verhindert XSS) +function escapeHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + // ===== DOM 元素 ===== document.addEventListener('DOMContentLoaded', function() { // 获取DOM元素 @@ -1335,8 +1346,8 @@ function createHistoryItem(item) { -
${item.sourceText}
-
${item.translation}
+
${escapeHtml(item.sourceText)}
+
${escapeHtml(item.translation)}
`; // 点击历史记录项,填充到翻译区域 @@ -1393,8 +1404,8 @@ function createFavoriteItem(item) { × -
${item.sourceText}
-
${item.translation}
+
${escapeHtml(item.sourceText)}
+
${escapeHtml(item.translation)}
`; // 点击收藏项,填充到翻译区域