Skip to content

fix(analytics): 인라인 스크립트 보간 제거로 XSS 잠재 위험 차단 - #94

Merged
CoBool merged 1 commit into
mainfrom
fix/ga-script-injection-safety
Aug 16, 2026
Merged

fix(analytics): 인라인 스크립트 보간 제거로 XSS 잠재 위험 차단#94
CoBool merged 1 commit into
mainfrom
fix/ga-script-injection-safety

Conversation

@CoBool

@CoBool CoBool commented Aug 16, 2026

Copy link
Copy Markdown
Owner

변경 내용

  • src/components/google-analytics.tsx에서 config.measurementId를 인라인 JavaScript 코드 문자열에 템플릿 리터럴로 직접 보간하던 방식을 제거
  • <script async data-ga-measurement-id={config.measurementId} src={gtagSource} /> 속성을 통해 ID를 전달하고, 인라인 스크립트 본문은 완전한 정적 문자열로 고정
  • tests/stage-7-seo-feed-integrations.test.tsx에 GoogleAnalytics 활성화 시 스크립트 태그 및 데이터 속성 렌더링 검증 단위 테스트 추가

변경 이유

  • 동적 설정값(환경변수 등)을 템플릿 리터럴로 JavaScript 실행 구문에 직접 삽입하는 패턴은 잠재적인 스크립트 인젝션(XSS) 취약점 위험을 가집니다.
  • 스크립트 본문을 불변의 정적 문자열로 격리하고 DOM 속성을 통해 안전하게 값을 주입받도록 개선하여 보안성을 강화했습니다.

검증

  • pnpm lint: 통과
  • pnpm typecheck: 통과
  • pnpm test: GA 렌더링 테스트 포함 32개 테스트 파일 / 226개 테스트 전체 통과
  • pnpm build: 정적 빌드 성공 및 HTML 내 스크립트 태그 정상 생성 확인

- measurementId를 인라인 JavaScript 코드에 템플릿 리터럴로 직접 보간하던 방식에서 data-ga-measurement-id 속성 기반 전달 방식으로 개선
- 인라인 스크립트 코드를 완전한 정적 문자열로 고정하여 잠재적인 코드 인젝션 벡터 차단
- GoogleAnalytics 렌더링 검증 단위 테스트 추가
@CoBool
CoBool force-pushed the fix/ga-script-injection-safety branch from 62f59cb to f9adfa5 Compare August 16, 2026 12:15
@CoBool
CoBool merged commit 5f809f9 into main Aug 16, 2026
1 check passed
@CoBool
CoBool deleted the fix/ga-script-injection-safety branch August 16, 2026 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant