
보안 문서 보기: 모범 사례
디지털 생태계에서 문서는 비즈니스의 통화와 같습니다. 계약서, 재무제표, 환자 기록, 그리고 엔지니어링 설계도는 매 초마다 서버와 장치 사이를 오갑니다. 그러나 이러한 편리함에는 상당한 위험이 따릅니다. 한 개의 유출된 문서만으로도 수백만 달러의 손해, 평판 파탄, 그리고 심각한 규제 처벌을 초래할 수 있습니다.
웹 애플리케이션 개발자에게 문서 접근을 제공하는 일은 균형 잡힌 행동입니다. 권한이 있는 사용자는 쉽게 접근할 수 있어야 하고, 권한이 없는 악의적인 행위자는 데이터를 훔칠 수 없게 해야 합니다. 보안 문서 보기는 단일 기능이 아니라 방어‑깊이 전략입니다. 이 글에서는 Doconut을 활용해 웹 애플리케이션에 보안 문서 보기를 구현하기 위한 포괄적인 모범 사례를 살펴보겠습니다.
클라이언트‑사이드 보안의 오류
보안 문서 보기의 첫 번째 규칙은: 클라이언트를 절대 신뢰하지 말라.
많은 초보적인 “보안” 보기 구현은 PDF를 브라우저에 전송하고 JavaScript를 사용해 우클릭 메뉴를 비활성화하거나 다운로드 버튼을 숨기려 합니다. 이는 “보안 연극”에 불과합니다. PDF 파일이 클라이언트의 브라우저에 전송되면, 사용자는 이미 파일을 보유하게 됩니다. 기술에 정통한 사용자는 개발자 도구의 네트워크 탭을 열어 요청을 찾아 바로 PDF를 저장할 수 있습니다. JavaScript를 비활성화하면 우클릭 방어를 회피할 수도 있습니다.
Best Practice #1: 서버‑사이드 렌더링
파일 도난을 효과적으로 방지하는 유일한 방법은 파일 자체를 사용자에게 전송하지 않는 것입니다. Doconut은 Server‑Side Rendering을 사용합니다. 원본 문서(PDF, DOCX 등)는 안전한 서버 또는 프라이빗 클라우드 스토리지(AWS S3, Azure Blob)에 그대로 보관됩니다.
사용자가 문서 보기를 요청하면:
- Doconut 서버가 파일을 안전하게 엽니다.
- 요청된 페이지를 시각적 표현(이미지 또는 HTML5/SVG)으로 변환합니다.
- 이 시각적 표현만 클라이언트에 스트리밍됩니다.
이 아키텍처 덕분에 사용자가 네트워크 트래픽을 조사하더라도 현재 페이지의 이미지 타일 컬랙션만 보게 되며, 구조적인 원본 문서는 전혀 노출되지 않습니다.
Best Practice #2: 억제 효과가 있는 동적 워터마크
때로는 위협이 해커가 아니라, 악의적이거나 부주의한 권한 사용자일 수 있습니다. 직원이 스마트폰으로 화면을 촬영한다면 어떨까요? 암호화만으로는 아날로그 구멍을 막을 수 없습니다.
이때 Dynamic Watermarking이 필수적입니다. 이는 심리적 억제와 포렌식 도구 역할을 동시에 합니다. Doconut은 문서 렌더 스트림에 동적인 식별 정보를 삽입할 수 있게 해줍니다.
다음과 같은 정보를 워터마크에 포함시키세요:
- User Identity: "Viewed by alice@example.com"
- Session Information: "IP: 192.168.1.50"
- Timestamp: "2026-02-13 14:00 UTC"
- Sensitivity Label: "CONFIDENTIAL - DO NOT DISTRIBUTE"
Doconut이 서버에서 이 워터마크를 렌더링하기 때문에 이미지에 고정되어 있으며, “Inspect Element”로는 제거할 수 없습니다. 유출된 스크린샷이 경쟁사의 블로그에 올라오면, 누가 언제 유출했는지 즉시 파악할 수 있습니다.
Best Practice #3: 일시적 접근 토큰
직접 파일 경로를 노출하지 마세요(예: https://myapp.com/files/contracts/secret.pdf). 이렇게 하면 예측 가능한 URL이 생성되어 열거될 위험이 있습니다( 101.pdf 를 102.pdf 로 바꾸는 식).
대신 Ephemeral Access Tokens을 사용하세요. Doconut은 이 패턴과 완벽히 통합됩니다.
- 사용자가 애플리케이션에 정상적으로 인증합니다.
- 애플리케이션이 사용자가 파일 #101을 볼 권한이 있음을 확인합니다.
- 애플리케이션이 Doconut에 파일 #101에 대한 보기 토큰을 요청합니다.
- 이 토큰은 암호적으로 서명되며 단일 세션에만 유효하고 짧은 기간(예: 20분) 후에 만료됩니다.
사용자가 URL을 복사해 친구에게 이메일로 보냈다고 가정하면, 친구가 클릭할 때쯤 토큰이 이미 만료돼 있을 가능성이 큽니다. 다른 IP 주소(구성된 경우)에서 토큰을 사용하려 하면 거부됩니다.
Conclusion
보안 문서 보기는 현대 웹 애플리케이션 아키텍처의 핵심 요소입니다. 단순 파일 다운로드를 넘어 스트리밍 기반, 서버 제어 접근 방식으로 전환해야 합니다.
Doconut은 이러한 방어‑깊이 전략을 구현하기 위한 도구 세트를 제공합니다. 서버‑사이드 렌더링, 동적 워터마크, 일시적 토큰, 세분화된 DRM, 엄격한 캐싱 정책을 결합함으로써 조직의 가장 소중한 자산을 안전하고, 규정을 준수하며, 여러분의 통제 하에 유지할 수 있습니다. 보안은 나중에 추가하는 기능이 아니라 처음부터 설계하는 아키텍처이며, Doconut은 그 아키텍처를 위한 안전한 기반입니다.