T09 · Insecure Skill Coding Practices
- Location
web/templates/index.html:1003- Finding
Persistent DOM-Based Cross-Site Scripting Through Untrusted Media URLs
- Content
View full analysis
{ const card = document.createElement('div'); card.className = 'track-card'; const date = track.created_at ? new Date(track.created_at).toLocaleString() : 'Unknown'; const duration = track.duration ? `${Math.round(track.duration)}s` : ''; card.innerHTML = ``; container.appendChild(card); }); ``` ### Technical Analysis The application obtains track records from `/history` and inserts them into the document using `innerHTML`. Although some textual properties are passed through `escapeHtml`, `track.image_url` and `track.audio_url` are directly interpolated into quoted HTML attributes. These URL values originate in the external music API response and are subsequently persisted in `generation_hi ...[truncated 1648 chars]${escapeHtml(track.title)}
${escapeHtml(track.prompt || track.style || '')} • ${date} ${duration}
${track.audio_url ? `` : ''}下载 MP3 ${track.lyric ? `歌词` : ''}- Remediation
View remediation
