From f32118932dd41a44037b2adb2a83676eeec82554 Mon Sep 17 00:00:00 2001 From: PhoenixProject <103653068+EthanThePhoenix38@users.noreply.github.com> Date: Sat, 31 Jan 2026 15:45:50 +0100 Subject: [PATCH] Potential fix for code scanning alert no. 1: DOM text reinterpreted as HTML Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- chatbot.js | 56 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/chatbot.js b/chatbot.js index fb26ec9..88b9ac3 100644 --- a/chatbot.js +++ b/chatbot.js @@ -125,18 +125,26 @@ class PhoenixChatbot { setTimeout(() => { this.removeTypingIndicator(); - const messageHTML = ` -
+ // Create bot message element safely without interpreting text as HTML + const messageEl = document.createElement('div'); + messageEl.className = 'chatbot-message bot'; + + const avatarEl = document.createElement('div'); + avatarEl.className = 'message-avatar'; + avatarEl.innerHTML = ` + `; - messagesDiv.insertAdjacentHTML('beforeend', messageHTML); + const contentEl = document.createElement('div'); + contentEl.className = 'message-content'; + contentEl.textContent = text; + + messageEl.appendChild(avatarEl); + messageEl.appendChild(contentEl); + + messagesDiv.appendChild(messageEl); this.scrollToBottom(); this.messages.push({ type: 'bot', text }); }, 1000); @@ -145,18 +153,26 @@ class PhoenixChatbot { addUserMessage(text) { const messagesDiv = document.getElementById('chatbotMessages'); - const messageHTML = ` - + // Create user message element safely without interpreting text as HTML + const messageEl = document.createElement('div'); + messageEl.className = 'chatbot-message user'; + + const contentEl = document.createElement('div'); + contentEl.className = 'message-content'; + contentEl.textContent = text; + + const avatarEl = document.createElement('div'); + avatarEl.className = 'message-avatar'; + avatarEl.innerHTML = ` + `; - messagesDiv.insertAdjacentHTML('beforeend', messageHTML); + messageEl.appendChild(contentEl); + messageEl.appendChild(avatarEl); + + messagesDiv.appendChild(messageEl); this.scrollToBottom(); this.messages.push({ type: 'user', text }); }