From 3cbead1219694982f9ae9f74872b25c7391d23a0 Mon Sep 17 00:00:00 2001
From: water <672684719@qq.com>
Date: Wed, 22 Jul 2026 00:28:44 +0800
Subject: [PATCH] fix: replace innerHTML with DOM node construction to prevent
XSS (Closes #7137)
---
tools/bcos-badge-generator/index.html | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/bcos-badge-generator/index.html b/tools/bcos-badge-generator/index.html
index f11d8bb0e..1b31f6a8f 100644
--- a/tools/bcos-badge-generator/index.html
+++ b/tools/bcos-badge-generator/index.html
@@ -732,14 +732,14 @@
BCOS Badge Generator
img.alt = `BCOS Badge for ${certId}`;
img.onload = () => {
- previewArea.innerHTML = '';
+ previewArea.replaceChildren();
previewArea.appendChild(img);
resolve();
};
img.onerror = () => {
// For demo purposes, show a placeholder if endpoint is unavailable
- previewArea.innerHTML = '';
+ previewArea.replaceChildren();
const container = document.createElement('div');
container.style.textAlign = 'left';
@@ -808,7 +808,11 @@ BCOS Badge Generator
function setLoading(loading) {
if (loading) {
generateBtn.disabled = true;
- generateBtn.innerHTML = 'Generating...';
+ generateBtn.replaceChildren();
+ const spinner = document.createElement('span');
+ spinner.className = 'spinner';
+ generateBtn.appendChild(spinner);
+ generateBtn.appendChild(document.createTextNode('Generating...'));
} else {
generateBtn.disabled = false;
generateBtn.textContent = 'Generate Badge';
@@ -821,7 +825,7 @@ BCOS Badge Generator
currentStyle = 'flat';
styleBtns.forEach(b => b.classList.remove('active'));
styleBtns[0].classList.add('active');
- previewArea.innerHTML = '';
+ previewArea.replaceChildren();
const span = document.createElement('span');
span.className = 'preview-placeholder';
span.textContent = 'Enter a Certificate ID and click "Generate Preview" to see your badge';