安全共享 PDF,无需上传至第三方站点:法律团队的分步指南
2026/2/6

安全共享 PDF,无需上传至第三方站点:法律团队的分步指南

法律团队如何在自己的 .NET 门户中预览 PDF,而不是使用第三方站点,并将加密、令牌和审计日志保留在它们应在的位置:您的应用程序中。

法律部门处理合同、证据文件以及其他高度机密的文档。将 PDF 上传到基于云的共享服务的常见工作流会立即产生安全风险:文件位于企业防火墙之外,您失去对谁可以查看以及查看多长时间的细粒度控制。

如果您能够将安全、加密的 PDF 查看器直接嵌入到您的 .NET Web 门户中,确保文档永不触及第三方服务器,该怎么办?

在本指南中,我们将逐步演示围绕 Doconut Viewer 构建的实用架构,该 .NET 文档查看器 SDK 安装在您自己的应用程序中,且不向 Doconut 服务器发起任何调用,因此文档永不离开您的基础设施。

在开始第一步之前,需要先明确两件事,因为后续内容都依赖于它们。Doconut.app 是免费网页查看器——一个网站,而不是组件,也不是您在此处安装的内容。加密、令牌和审计日志均由您自行构建:SDK 负责渲染文档,但不提供合规方案。Doconut 不持有 ISO 27001 证书、SOC 2 报告或 HIPAA 证明,因此您向监管机构提出的合规论点只能是架构层面的——文件始终停留在您已控制的边界内。


为什么传统云共享无法满足需求

风险典型云服务本架构的做法
数据外流 - 文件存储在外部服务器上文件持久化在供应商的存储中,常常位于您无法控制的地区。PDF 保持在您自己的基础设施上。SDK 在本地渲染,且不调用任何外部服务。
访问时效失控共享链接可以无限期转发。您发放短期、一次性令牌。这是您编写的代码,而不是一个开关。
合规缺口审计日志往往仅记录“下载”事件。您记录每一次预览请求,因为请求会发送到您自己的端点。
插件依赖许多查看器需要 Flash、ActiveX 或浏览器扩展。读取者的机器上无需安装任何东西;浏览器直接接收渲染后的页面。

解决方案概览

  1. 在您的 .NET 项目中安装 Doconut Viewer。
  2. 使用服务器端密钥对 PDF 进行静态加密,利用 .NET 自带的加密库。
  3. 在 Razor 页面或 MVC 视图中嵌入查看器,并通过您应用程序签发的令牌进行访问控制。
  4. 对每一次预览请求进行日志记录,以便审计追踪和异常检测。

第 2、3、4 步是您应用程序的工作。SDK 负责第 1 步以及渲染;此设计中所有保护措施均由您拥有的代码实现,这也是它可以由您内部团队审计的原因。

下面详细演示每一步的操作,并提供密钥管理、令牌安全和合规日志的最佳实践建议。


第 1 步 – 准备您的 .NET 环境

  1. 在 Visual Studio 中打开您的解决方案(建议使用 2022 或更高版本)。

  2. 选择目标框架。Doconut Viewer 支持 ASP.NET、MVC、.NET Core、.NET 6+ 以及 Blazor。记录下您最终确定的版本——集成细节会因版本而异。

  3. 从 Doconut 下载页面 安装 SDK,使用与您所选版本匹配的包和文档。请务必参考该文档中的包名和安装步骤,而不是文章中的说明;不同版本之间可能已发生更改。

    在此过程中,请将许可证配置文件排除在源代码管理之外。这是从工作原型泄露的最常见问题。

附加提示

  • 将包引用存放在 Directory.Packages.props 文件中,以实现跨多个服务的集中版本管理。

第 2 步 – 使用强加密存储 PDF

2.1 选择加密算法

这取决于你的决定和代码。 .NET 中的 System.Security.Cryptography 提供 AES-256-GCM,它提供认证加密——同时保证机密性和完整性——是静态文档的可辩护默认选项。

没有任何加密算法能让系统符合 GDPR、HIPAA 或 ISO 27001。这些框架关注的是流程、访问控制、保留和证据。加密只是众多控制措施之一,查看器库无法提供其余部分。

2.2 实施安全密钥管理

  • 绝不要硬编码密钥。 使用 Azure Key Vault、AWS KMS 或 HashiCorp Vault 在运行时获取加密密钥。
  • 定期轮换密钥——每 90 天是常见做法。提前规划重新加密作业;在事故中发现没有办法滚动密钥是非常糟糕的教训。

第 3 步 – 生成时限性、一次性令牌

预览令牌类似于 一次性徽章,会自动过期。它包含:

  • 用户 ID – 谁被允许查看文档。
  • PDF ID – 要流式传输的加密文件。
  • 过期时间 – 通常为 5–10 分钟,可根据策略配置。
  • 签名 – 使用 HMAC 或 RSA 签名以防篡改。

3.1 安全考虑

  • 全程使用 TLS – 始终通过 HTTPS 提供令牌。
  • 最小特权 – 只编码预览所需的数据,避免嵌入额外声明。
  • 令牌撤销 – 在 Redis 中维护一个简单的“黑名单”,即可在用户访问权限变更时立即撤销。

第 4 步 – 嵌入 DoconutApp Viewer

4.1 服务器端流式传输端点

  • 在内存中解密,如果你的威胁模型要求如此,这样明文永远不会落盘。这是你的端点,由你决定实现方式并自行审查代码。
  • 渲染在你的服务器上进行,而不是在阅读者的浏览器中。这使得浏览器能够显示文档而无需接收源文件——同时也需要检查 SDK 将临时渲染输出写入何处,以及如何清除这些文件。

4.2 无需插件

阅读者通过标准 Web 技术获取渲染页面,因而 Viewer 可在 Chrome、Edge、Firefox 和 Safari 上工作,无需插件、ActiveX 控件或 Flash 依赖。律师的笔记本电脑上无需安装任何东西,这通常决定了安全审查能否顺利完成。


第 5 步 – 审计与日志记录以满足合规

法律团队常需 防篡改审计轨迹,记录谁在何时查看了哪份合同。实现结构化日志管道:

字段描述
UserId请求查看的法律专业人员标识
PdfId加密文档的内部引用
Timestamp预览请求的 UTC 时间
IpAddress来源 IP(有助于地理位置检查)
UserAgent浏览器字符串,用于取证分析
Result成功 / 失败(例如令牌无效、解密错误)

最佳实践

  • 将日志存储在 追加写入、不可变的数据存储 中(如 Azure Log Analytics、Splunk,或写一次的 S3 桶)。
  • 启用告警,监控异常模式——例如同一令牌在几秒内被两个不同 IP 使用。
  • 保留策略:根据所在司法辖区的要求保留日志(法律记录通常需保存 7 年)。

快速回顾

  1. 在 .NET 项目中安装 Doconut Viewer,参考对应版本的文档。
  2. 在写入时使用 .NET 自带的加密库 AES-256-GCM 加密 PDF;通过金库服务管理密钥。
  3. 在用户请求查看时发放短期、一次性预览令牌。
  4. 在服务器上渲染并在 Razor 页面中嵌入 Viewer,文档永不泄露给第三方,阅读者机器上也无需安装任何东西。
  5. 对每次预览进行日志记录,并对可疑模式设置告警,以满足审计需求。

第 2、3、5 步是你的代码实现。这是诚实的职责划分,值得在自己的安全文档中明确说明,因为审查员最终会询问各方的责任分工。

结论

安全的 PDF 共享不一定需要第三方服务。将 Doconut Viewer 嵌入您自己的 .NET 门户,您的法务部门可以在文件始终不离开您基础设施的情况下,展示机密合同、诉讼展品和内部政策。

SDK 为您提供的正是最后这一步:在您的环境中进行渲染,且无需回调。端到端加密、访问控制和审计日志都归您所有——这才是关键,因为如果一个查看器声称提供这些功能,您就必须信任供应商的合规性,而不是自己的。

准备好尝试了吗?访问 doconut.com —— 试用许可证免费,且 实时演示 是在您编写上述任何代码之前,最快了解渲染在最棘手的展品上是否可靠的方式。

实施这些步骤将让合规官员安心,降低攻击面,并将您的 PDF 严格保留在企业防火墙内——正是任何法务团队所需的安全姿态。

保持安全,保持合规,并将那些密封的信封放在它们该在的地方:您自己的保险库中。