fix(dashboard): XSS escaping, ResizeObserver leak, WS reconnect timer

- Ajout de esc() dans api.js pour échapper les valeurs serveur avant injection innerHTML
- Application de esc() sur hostname, ip et agentId dans grid.js et popups.js
- Fix fuite mémoire ResizeObserver dans showDetail : déconnexion avant recréation (_resizeObs)
- Fix WebSocket reconnect : clearTimeout avant setTimeout pour éviter les timers concurrents (_reconnectTimer)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gilles Soulier
2026-05-22 12:46:37 +02:00
co-authored by Claude Sonnet 4.6
parent 555ddc3556
commit a19705ffda
4 changed files with 25 additions and 9 deletions
+3 -1
View File
@@ -1,6 +1,7 @@
const App = (() => {
let _ws = null;
let _reconnectDelay = 1000;
let _reconnectTimer = null;
let _serverConfig = null;
// Tooltip global position:fixed
@@ -62,7 +63,8 @@ const App = (() => {
};
_ws.onclose = () => {
setTimeout(connectWS, _reconnectDelay);
clearTimeout(_reconnectTimer);
_reconnectTimer = setTimeout(connectWS, _reconnectDelay);
_reconnectDelay = Math.min(_reconnectDelay * 2, 30000);
};
}