개요
에디터 → 정제·보안과 맞추고, 정제를 Rust/WASM에서 하면 JS 경로와 동일한 정책을 씁니다. 클립보드·입력 라우팅.
CSP
script-src와 WASM 로드에 필요한 지시어(환경에 따라 wasm-unsafe-eval 등)는 브라우저 문서를 따라가며 업데이트됩니다.
WASM만 돌리게 CSP를 느슨히 하면 XSS 면이 넓어질 수 있습니다. 신뢰하는 출처만 허용하세요.
SRI·무결성
WASM·JS를 신뢰 출처에서 제공하고, 도구가 지원하면 무결성 속성으로 CDN 치환을 감지합니다.
붙여넣기·XSS
붙여넣기 HTML은 신뢰할 수 없는 입력입니다. JS든 WASM이든 DOM에 넣기 전에 스크립트·이벤트 핸들러·위험 URL을 일관되게 제거합니다.
서드파티 임베드
iframe·외부 사이트 임베드는 COOP/COEP·워커 가능 여부를 바꿉니다. 툴링·번들·워커.
Wasm 가이드
에디팅 방식
contenteditable + WASM: 진실 원천, 이벤트 순서, DOM↔모델 루프, 정규화, Rust 호출 시점.
IME·조합 입력
조합 이벤트, Rust 문서 모델 동기화, IME는 여전히 브라우저 영역인 이유.
JS ↔ WASM 경계
문자열·복사·배치 연산, 비동기와 입력 이벤트, 핫 패스 비용 줄이기.
클립보드·입력 라우팅
beforeinput, 붙여넣기, JS에서 라우팅할지 WASM에서 정제할지.
툴링·번들·워커
wasm-pack, wasm-opt, 코드 스플릿, Web Worker, COOP/COEP·스레드.
협업·CRDT (WASM)
Yrs·y-crdt, Yjs 연동, 스냅샷 vs 업데이트 스트림.
선택·Range·오프셋
UTF-16 vs UTF-8, JS Selection/Range, Rust 모델 매핑·getTargetRanges.
실행 취소·다시 실행 모델
브라우저 undo 스택 vs 모델 히스토리, 프로그래밍 DOM, WASM 트랜잭션.
접근성 (WASM 호스트)
편집 표면이 브라우저일 때 역할·포커스·스크린 리더.
테스트·디버깅
E2E, JS↔WASM 경계 프로파일링, IME·붙여넣기 CI 재현.