From b3ff87b151e46f6ba580964c0db196dff0e02927 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 23 Mar 2026 08:22:26 +0900 Subject: [PATCH] =?UTF-8?q?fix(tkuser):=20XSS=20=EB=AF=B8=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=9D=B4=ED=94=84=204=EA=B0=9C=EC=86=8C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=E2=80=94=20escHtml()=20=EB=88=84=EB=9D=BD?= =?UTF-8?q?=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 (1M context) --- user-management/web/static/js/tkuser-departments.js | 4 ++-- user-management/web/static/js/tkuser-vacations.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/user-management/web/static/js/tkuser-departments.js b/user-management/web/static/js/tkuser-departments.js index ca2bfff..8d56d33 100644 --- a/user-management/web/static/js/tkuser-departments.js +++ b/user-management/web/static/js/tkuser-departments.js @@ -21,7 +21,7 @@ function displayDepartments() { c.innerHTML = departments.map(d => `
-
${d.department_name}
+
${escHtml(d.department_name)}
순서: ${d.display_order || 0} | 팀장: ${d.leader_name ? escHtml(d.leader_name) : '미지정'} @@ -56,7 +56,7 @@ async function showDeptMembers(deptId) { const members = deptUsers.filter(u => u.department_id === deptId); const dept = departments.find(d => d.department_id === deptId); const title = panel.querySelector('h3'); - if (title) title.innerHTML = `소속 인원 — ${dept ? dept.department_name : ''}`; + if (title) title.innerHTML = `소속 인원 — ${dept ? escHtml(dept.department_name) : ''}`; if (!members.length) { list.innerHTML = '

소속 인원이 없습니다

'; diff --git a/user-management/web/static/js/tkuser-vacations.js b/user-management/web/static/js/tkuser-vacations.js index 52798d9..a7d4f0c 100644 --- a/user-management/web/static/js/tkuser-vacations.js +++ b/user-management/web/static/js/tkuser-vacations.js @@ -65,13 +65,13 @@ function renderVacTypeSidebar() {
- ${vt.type_name} + ${escHtml(vt.type_name)} ${vt.is_system ? '시스템' : ''} ${vt.is_special ? '특별' : ''} ${!vt.is_active ? '비활성' : ''}
- ${vt.type_code} | 차감 ${vt.deduct_days}일 | 우선순위 ${vt.priority} + ${escHtml(vt.type_code)} | 차감 ${vt.deduct_days}일 | 우선순위 ${vt.priority}