Skip to content

rhwp-chrome: OneDrive/SharePoint HWP 파일 인라인 열기 (개인 OneDrive 우선) #242

@Hyunwook-Kim-WV

Description

@Hyunwook-Kim-WV

배경

OneDrive(개인) 및 OneDrive for Business/SharePoint 웹 UI에서 .hwp / .hwpx 파일을 클릭하면 Microsoft 기본 미리보기가 "미리보기 불가" 오버레이를 띄우고, 다운로드 메뉴를 거쳐야만 rhwp 확장의 다운로드 인터셉터가 동작한다.

결과적으로 OneDrive 환경에서는 rhwp가 제공하는 한-클릭 뷰어 진입 UX가 작동하지 않는다. Word 파일을 클릭하면 바로 뷰어 탭이 열리는 것과 대비되는 경험 격차.

목표

개인 OneDrive (onedrive.live.com) 에서 HWP/HWPX 파일 클릭 시, 다운로드 대화상자·"미리보기 불가" 오버레이 없이 rhwp 뷰어 탭이 열려 즉시 렌더링되도록 한다.

비목표 (본 이슈 범위 외)

  • OneDrive for Business / SharePoint (*.sharepoint.com, *-my.sharepoint.com) — AAD Bearer 토큰 / MSAL / SPO REST 스코프 처리가 독자적 난이도이므로 별도 후속 이슈로 분리
  • 편집 결과의 OneDrive 되저장 (읽기 전용 유지)
  • Safari 포팅 (후속)
  • Google Drive / Dropbox 등 타 클라우드 (후속)

접근 방향 (요약)

  1. OneDrive 도메인에서만 활성화되는 전용 핸들러 (onedrive-handler.js) 분리 — 기존 범용 배지·호버 로직(content-script.js)과 독립
  2. document 레벨 capture phaseclick / dblclick / keydown Enter / 컨텍스트 메뉴 "열기" 이벤트 가로채기 (preventDefault + stopImmediatePropagation)
  3. Service Worker가 credentials: 'include' + redirect: 'manual' 로 파일 직접 fetch → 매직 넘버·크기·도메인 검증 후 뷰어 탭에 전달

보안 고려 (필수)

브라우저 확장 보안 감사 보고서(mydocs/report/browser_extension_security_audit.md) 지적 사항 연계:

  • C-01 오픈 프록시 방지: OneDrive 관련 도메인 화이트리스트 (*.onedrive.live.com, *.storage.live.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 상한 + 대용량 경고

성공 기준

  • 개인 OneDrive 웹에서 HWP/HWPX 클릭 → 다운로드 대화상자 없음, 미리보기 오버레이 없음
  • rhwp 뷰어 탭이 즉시 열려 문서 렌더링
  • click / dblclick / Enter 모두 동일 UX
  • 비-OneDrive 사이트의 배지·호버 기능 회귀 0
  • 기존 다운로드 인터셉터 정상 (.hwp 직접 링크)
  • 보안 하드닝 단위 테스트 그린 (도메인 화이트리스트·리다이렉트·매직 넘버·크기 제한)
  • 작업지시자 실계정 수동 검증 통과

선행 검토

  • 외부 제안서 선행 검토 완료: OneDrive DOM 가로채기 방향은 타당하나 하이퍼-워터폴 절차·보안 연계·OfB 난이도 보강 필요
  • 수행계획서: mydocs/plans/task_m100_{이_이슈번호}.md (승인 대기)

관련

체크리스트 (진행 추적용)

  • 수행계획서 작성 및 승인
  • 구현계획서 작성 및 승인
  • Stage 1: DOM 프로브 + 도메인 감지
  • Stage 2: Activation 이벤트 가로채기
  • Stage 3: URL 확보 + 보안 하드닝
  • Stage 4: 뷰어 연결 + E2E + 검증
  • 최종 보고서

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions