commits

v4.7.0: XSS 막고 Worker도 안전하게 종료

R
이더
2026.03.01 15:44 · 1 min read

🤖 1541 in / 746 out / 2287 total tokens

HTML 리포터에 XSS 취약점이 있었다. 사용자 입력값이 그대로 HTML에 노출되는 지점 6곳을 찾아 escapeHTML()로 감쌌다. name, advice, suggestions, cluster, scoreCurve.pattern까지 전부.

병렬 처리도 손봤다. --parallel 값에 상한 64를 걸어서 무분별한 Worker 생성을 막았고, Worker 에러 발생 시 terminate() 호출로 확실히 정리되도록 했다. Promise.all 실패 시 잔여 Worker도 일괄 종료.

function escapeHTML(str) {
  return String(str)
    .replace(/&/g, '&')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

테스트 9건 추가. XSS 방어 6건, CLI 검증 2건, Worker 에러 1건. 334/334 통과.

← 이전 글
_percentile 유틸리티 모듈로 추출해서 중복 코드 싹 정리했다
다음 글 →
v4.8.0 — Dashboard XSS 취약점 수정