배경
Google Drive (drive.google.com) 웹 UI에서 .hwp / .hwpx 파일을 클릭하면 Google 의 기본 미리보기가 "미리보기 불가" 또는 빈 영역을 띄우고, 다운로드 메뉴를 거쳐야만 rhwp 확장의 다운로드 인터셉터가 동작한다.
OneDrive 와 동일한 결함 본질 — Google 도 HWP 형식을 네이티브 미리보기 미지원. 글로벌 클라우드 일반의 본질.
이슈 #242 와 동일 우회 패턴이 Google Drive 에도 적용 가능하다고 판단됨.
목표
개인 Google Drive (drive.google.com) 에서 HWP/HWPX 파일 클릭 시, 다운로드 대화상자·"미리보기 불가" 오버레이 없이 rhwp 뷰어 탭이 열려 즉시 렌더링되도록 한다.
비목표 (본 이슈 범위 외)
- Google Workspace (G Suite) 기업 계정 — OAuth 2.0 / Drive API v3 스코프 처리가 독자적 난이도이므로 별도 후속 이슈
- 편집 결과의 Google Drive 되저장 (읽기 전용 유지)
- Safari 포팅 (후속)
접근 방향 (요약)
본 이슈와 #242 OneDrive 의 우회 패턴은 framework 으로 통합 가능:
- 클라우드 핸들러 framework (
cloud-handlers/) — OneDrive / Google Drive 도메인별 핸들러 분리
- document 레벨 capture phase 로 click / dblclick / keydown Enter / 컨텍스트 메뉴 "열기" 이벤트 가로채기
- Service Worker 가
credentials: 'include' 로 파일 직접 fetch (사용자 인증 쿠키 사용)
- 매직 넘버·크기·도메인 화이트리스트 검증 후 뷰어 탭에 전달
보안 고려 (필수)
#242 와 동일:
- C-01 오픈 프록시 방지: Google Drive 도메인 화이트리스트 (
drive.google.com, *.googleusercontent.com)
- C-02 URL 검증: 프로토콜·호스트·확장자·
Content-Length 검증
- DNS Rebinding / 리다이렉트 체이닝:
redirect: 'manual' 강제 + Location 헤더 재검증
- 매직 넘버 검증: HWP (
D0 CF 11 E0) / HWPX (50 4B 03 04)
- N-04 메모리 DoS: 50MB 상한 + 대용량 경고
성공 기준
관련
마일스톤
v1.0.0 (M100)
배경
Google Drive (
drive.google.com) 웹 UI에서.hwp/.hwpx파일을 클릭하면 Google 의 기본 미리보기가 "미리보기 불가" 또는 빈 영역을 띄우고, 다운로드 메뉴를 거쳐야만 rhwp 확장의 다운로드 인터셉터가 동작한다.OneDrive 와 동일한 결함 본질 — Google 도 HWP 형식을 네이티브 미리보기 미지원. 글로벌 클라우드 일반의 본질.
이슈 #242 와 동일 우회 패턴이 Google Drive 에도 적용 가능하다고 판단됨.
목표
개인 Google Drive (
drive.google.com) 에서 HWP/HWPX 파일 클릭 시, 다운로드 대화상자·"미리보기 불가" 오버레이 없이 rhwp 뷰어 탭이 열려 즉시 렌더링되도록 한다.비목표 (본 이슈 범위 외)
접근 방향 (요약)
본 이슈와 #242 OneDrive 의 우회 패턴은 framework 으로 통합 가능:
cloud-handlers/) — OneDrive / Google Drive 도메인별 핸들러 분리credentials: 'include'로 파일 직접 fetch (사용자 인증 쿠키 사용)보안 고려 (필수)
#242 와 동일:
drive.google.com,*.googleusercontent.com)Content-Length검증redirect: 'manual'강제 + Location 헤더 재검증D0 CF 11 E0) / HWPX (50 4B 03 04)성공 기준
.hwp직접 링크)관련
mydocs/manual/browser_extension_dev_guide.mdmydocs/report/browser_extension_security_audit.md마일스톤
v1.0.0 (M100)