安全与隐私
了解 PreviewFile.dev 如何通过全面的安全功能保护您用户的文件
安全与隐私
PreviewFile.dev 从底层开始就是为了保护您用户的文件而构建。每个功能都以安全和隐私为核心设计。
核心安全功能
🔒 动态水印
添加自定义文本水印以保护敏感文档并防止未经授权的共享。
- 自定义文本:添加公司名称、保密声明或用户标识
- 位置控制:在文档上叠加水印
- 不可移除:水印在预览期间渲染,不存储在文件中
- 使用场景:法律文件、合同、机密报告
⏱️ 限时访问(TTL)
设置过期时间以确保链接不会无限期保持可访问状态。
- 灵活时长:从 15 分钟到 7 天(受套餐限制)
- 自动过期:链接在 TTL 过期后变得不可访问
- 无需手动清理:服务器自动处理过期会话
- 使用场景:临时文档共享、时效性文件
🚫 下载保护
阻止查看者下载文件,同时仍允许预览访问。
- 仅预览模式:用户可以查看但不能在本地保存文件
- 禁用右键:防止简单的下载尝试
- DevTools 保护:额外的层级防止技术绕过
- 使用场景:敏感 PDF、机密演示文稿、专有文档
🔥 一次性访问(阅后即焚)
创建在单次查看后自毁的链接。
- 单次使用链接:首次访问后自动过期
- 查看跟踪:系统记录链接何时被访问
- 完美前向保密:一旦查看,链接无法重复使用
- 使用场景:高度机密文档、密码重置、临时凭证
🔗 防盗链保护
防止未经授权的嵌入和带宽盗用。
- Referer 验证:仅允许从已批准的域访问
- IP/User-Agent 绑定:将会话绑定到特定客户端
- CloudFront 签名 URL:密码学安全的访问令牌
- 使用场景:保护 CDN 带宽、控制分发
隐私设计
客户端渲染
- 不保留数据:文件内容不会存储超过临时链接
- 带宽高效:尽可能直接客户端到存储的连接
- 服务器转换:由于技术限制,doc/office 文件需要进行服务器端转换
最小化数据收集
我们只收集提供服务所需的必要数据。
- 仅文件元数据:文件名、大小、MIME 类型、过期时间
- 不扫描内容:文件内容永远不会被分析或索引
- 可选用户数据:基本使用无需身份验证
- 审计日志:访问日志仅保留安全所需的时间
安全存储集成
文件存储在行业标准的 S3 兼容存储中。
- 静态加密:S3 服务器端加密(SSE-S3)
- 传输加密:所有连接使用 HTTPS/TLS
- 私有桶:存储不可公开访问
- 签名 URL:限时、密码学签名的访问令牌
合规与最佳实践
数据驻留
- 多区域支持:选择最接近用户的存储区域
- 私有部署:自托管以完全控制数据
- GDPR 考虑:最小化 PII 收集,按请求删除数据
访问控制
- 用户认证:可选的基于 Clerk 的身份验证
- API 密钥管理:安全的基于令牌的 API 访问
- 速率限制:防止滥用和 DDoS
安全头
- 内容安全策略(CSP):防止 XSS 攻击
- X-Frame-Options:防止点击劫持
- Strict-Transport-Security:强制 HTTPS
开发者指南
API 安全
// 所有 API 请求都需要身份验证
const response = await fetch('https://previewfile.dev/api/u', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com/confidential.pdf',
ttlMinutes: 60,
watermark: '机密 - 仅供内部使用',
noDownload: true,
oneTime: false,
}),
});安全配置示例
// 创建高度安全的预览链接
const securePreview = await trpc.preview.create.mutate({
file: uploadedFile,
ttlMinutes: 30, // 30 分钟后过期
watermark: `${user.email} - ${new Date().toISOString()}`, // 用户 + 时间戳水印
noDownload: true, // 防止下载
oneTime: true, // 单次使用链接
});威胁模型
PreviewFile.dev 防护以下威胁:
- ✅ 未经授权的分发:TTL 和一次性链接防止不受控制的共享
- ✅ 数据窃取:下载保护和水印阻止复制
- ✅ 盗链/带宽盗用:Referer 验证和签名 URL
- ✅ XSS/注入攻击:严格的 CSP 和输入验证