Volver a la wiki

Auditoría Suprema Etapa 3: cierre XSS/CSV en toda la interfaz (FE2-FE7)

Descripción

Cierre del barrido de seguridad de toda la interfaz legacy (static/js, 7 sub-áreas). La raíz R2 del Informe Supremo era escape inconsistente: existía window.escapeHtml pero no se aplicaba en todos los renders, y era insuficiente en contexto de atributo (no escapaba comillas) y URL (no bloqueaba javascript:).

Este commit crea 4 helpers de escape por contexto reutilizables y los aplica sistemáticamente en 41 ficheros de todo el frontend:

Áreas corregidas

Sub-áreaFicherosHallazgos principales
FE7 (core)base.js, QRLabelService, ChartCreatorsALTA: nombres de rack/location en innerHTML, sysName/hostname SNMP en tooltip heatmap
FE2 (editor)DeviceInfoModal, PropertiesPanel, backups, sftp_uiALTA: datos SNMP (kvRow), filenames SNMP (sftp), nombres/notas de device en inputs
FE4 (network/discovery)Discovery, HealthCheck, PortScanner, TargetManager, RangeManagerALTA: tabla de resultados, modal viewProfile, vendor/hostname/MAC crudos, href con safeUrl
FE5 (observatory/wireless/ups)ObservatoryDeviceList, Tabs, Alerts, WirelessReport, UpsReportALTA: nombres/IP de device/target, breakout de atributo data-*, CSV injection en exportes, error.message en heatmap
FE6 (signage)SignageContentGrid, PlaylistManager, ClientManager, ScheduleRenderers, DetailALTA: 19 hallazgos — nombres del CMS (asset/playlist/project/device) en grids/modales/schedule, CSV injection, bg_color en atributo style

Verificación

Impacto en el producto

Antes: Un nombre de equipo o contenido manipulado podía ejecutar código JavaScript en el navegador de quien lo vea (XSS), y un CSV exportado podía ocultar fórmulas peligrosas que Excel/LibreOffice ejecuta automáticamente.

Después: La interfaz ya blinda todos los nombres de equipos, datos SNMP, contenidos del CMS frente a “trampas” ocultas. El nombre de un dispositivo descubierto en la red o de una pantalla de signage ya no puede ejecutar código, y los exportes CSV ya no pueden colar fórmulas.

Línea de tiempo

Sesión de desarrollo

s130 (2026-06-12 · Sesión 130 · Auditoría Suprema Etapa 3 · barrido XSS/CSV FE2-FE7)
Autor: Edu (con Claude Code)
Commit: 6304eb5a64b95641c40ef6770e694735ff7e61a2

Véase también

Subir