Actions
이슈 #243
진행중
CP
RL
6-4. HTML 검증 및 보안 처리
이슈 #243:
6-4. HTML 검증 및 보안 처리
설명
XSS 방지. 악성 스크립트 차단
작업 내용¶
- LLM이 생성한 HTML을 WebView 렌더링 전 검증/필터링 (
src/utils/parseCodeBlocks.ts에서 추출된 HTML 대상) - CDN allowlist 방식 (전면 차단 대신 통제):
- 허용:
cdn.jsdelivr.net,cdnjs.cloudflare.com,unpkg.com,cdn.tailwindcss.com,fonts.googleapis.com,fonts.gstatic.com - 차단: 임의 도메인의
<script src>,<link rel="stylesheet">,<iframe>,<object>,<embed> - 차단:
javascript:,data:text/html스킴 - 차단: 외부 origin으로의 fetch/XHR/WebSocket
- 허용:
- CSP
<meta>주입 (allowlist와 일치):script-src https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://unpkg.com https://cdn.tailwindcss.com 'unsafe-inline'-
style-src(상동) +fonts.googleapis.com 'unsafe-inline' font-src fonts.gstatic.com data:connect-src 'none'frame-src 'none'object-src 'none'
-
src/screens/Chat/HtmlViewerScreen.tsx의onShouldStartLoadWithRequest를 동일 allowlist로 확장 (기존about:blank/data:+ 허용 CDN) - AXI 프롬프트(별도 이슈)에 "허용 CDN 목록만 사용" 가이드 추가 → LLM 단에서 선제 제어
- allowlist 외 도메인 감지 시: 해당 태그 제거 후 렌더 (사용성 우선, 경고 토스트 표시)
수용 기준¶
-
<script src="https://cdn.jsdelivr.net/...">등 허용 CDN 스크립트는 정상 로드된다 -
<script src="https://evil.com/x.js">등 미허용 도메인 스크립트는 차단된다 - Tailwind CDN + Chart.js로 생성한 차트 HTML이 정상 렌더링된다
-
<iframe src="...">등 외부 프레임이 로드되지 않는다 - 프롬프트 하이재킹(AXI §8)으로 유도된 미허용 CDN 삽입이 차단된다
-
CSP
connect-src 'none'으로 외부 API 호출이 차단된다 - 정상 HTML(인라인 스타일 + 인라인 스크립트 애니메이션)은 기존처럼 렌더링된다
참고¶
CP Chris Park이(가) 7달 전에 변경
- 프로젝트을(를) 14에서 Alphea App(으)로 변경되었습니다.
- 목표버전을(를) 6월 중간 버전(으)로 지정되었습니다.
Actions