mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-02 03:35:09 +02:00
fix(ui): use textContent for security banner layer labels
Was `div.innerHTML = \`<span>\${label}</span>...\`` with label coming
from an event field. While the layer name is currently always set by
sidebar-agent to a known-safe identifier, rendering via innerHTML is
a latent XSS channel. Switch to document.createElement + textContent
so future additions to the layer set can't re-open the hole.
Caught by pre-landing review.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -156,7 +156,14 @@ function showSecurityBanner(event) {
|
||||
const score = Number(row.confidence).toFixed(2);
|
||||
const div = document.createElement('div');
|
||||
div.className = 'security-banner-layer';
|
||||
div.innerHTML = `<span class="security-banner-layer-name">${label}</span><span class="security-banner-layer-score">${score}</span>`;
|
||||
const nameSpan = document.createElement('span');
|
||||
nameSpan.className = 'security-banner-layer-name';
|
||||
nameSpan.textContent = label;
|
||||
const scoreSpan = document.createElement('span');
|
||||
scoreSpan.className = 'security-banner-layer-score';
|
||||
scoreSpan.textContent = score;
|
||||
div.appendChild(nameSpan);
|
||||
div.appendChild(scoreSpan);
|
||||
layersEl.appendChild(div);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user