数据安全白皮书

我们如何保护你的数据 — 加密、访问控制、审计、自助式权利。

这份白皮书面向准备做技术尽调的工程团队、安全合规官、以及自己审计第三方供应商的资深用户。每条主张都对应代码或基础设施配置 —— 不是营销话术。

传输与存储加密

  • 所有传输强制 TLS 1.2+(ALB / Cloudflare 层强制 HTTPS,HSTS 由前端代理设置)
  • OAuth 刷新令牌和访问令牌使用 AES-256-GCM 加密,独立 96-bit IV(`lib/crypto.ts`)。`tokenVersion` 列允许我们后续轮换加密密钥时按批次重加密
  • API key 在数据库存的是 SHA-256 哈希(仅前缀明文存于 `prefix` 列用于 UI 标识)。完整 plaintext 只在创建时返回一次,泄漏 DB 也无法重建 key
  • 密码使用 bcrypt 哈希(cost factor 12)
  • 密码重置和邮箱验证 token 也存 SHA-256 哈希 + 24h 自动过期 + 单次使用

审计链路

所有账户级安全事件都写入 `audit_events` 表 — 登录 / 登出(含 IP + User-Agent)、密码修改、API key 创建/撤销、OAuth 连接/断开/令牌过期、订阅变更/取消。

  • 用户在 /settings#security 实时看到自己最近 10 条事件
  • 运营在 /admin 看到全站最近 12 条(仅 ADMIN_EMAILS 允许列表)
  • SDK 可通过 `/api/v1/audit-events` 拉取自己的完整历史(支持 `?since` + `?kind=` 过滤)
  • 180 天后由 cron 自动清理(`AUDIT_RETENTION_DAYS` env 可调)
  • `(userId, createdAt DESC)` 复合索引保证每用户查询 O(log n)

用户自助权利(GDPR / CCPA)

我们故意把 self-serve 路径放在最前面,让用户不用等客服就能行使数据权利:

  • 导出 — `GET /api/account/export` 返回完整 JSON 快照(profile + subscriptions + ad_accounts + api_keys 元数据 + 近 90 天 audit_events)。密钥明文永不出现
  • 删除 — /settings Danger Zone 一键关闭账户,级联清理所有 FK
  • 更正 — /settings 直接编辑显示名、locale、AI provider、邮件订阅
  • OAuth 撤销 — /settings 一键断开 + 各平台 console 也可撤

Stripe 幂等性

Stripe 至少一次投递语义意味着同一事件会重试。我们用 `stripe_events` 去重表:INSERT 事件 ID,PK 冲突 = 重复 = 立即 200。处理失败再 DELETE 让 Stripe 下次重试。这避免了订阅状态被双写、订单被双重计费等问题。

CSP 与防御深度

  • Content-Security-Policy 当前以 Report-Only 模式运行(`default-src self / frame-ancestors none / upgrade-insecure-requests`),违规上报到 `/api/csp-report`
  • X-Frame-Options: DENY(防点击劫持,与 frame-ancestors 双重保险)
  • X-Content-Type-Options: nosniff(防 MIME 嗅探)
  • Referrer-Policy: strict-origin-when-cross-origin
  • Permissions-Policy 关闭 camera/microphone/geolocation/interest-cohort/browsing-topics
  • 蜜罐字段保护 contact 表单:机器人填了隐藏 input 就静默丢弃

可观测性与事故响应

  • 结构化 JSON 日志(`lib/logger`)发到 CloudWatch
  • `captureError` hook 中央化错误捕获,可通过 `SENTRY_DSN` + `globalThis.__sentry` 转发到 Sentry(可选,不强依赖)
  • `/api/health` 端点支持 ALB / ECS healthcheck(探活 + 数据库 ping)
  • /status 页公开服务状态 + 90 天 incident 历史

AI 调用与数据保留

我们用 Anthropic Claude 和 OpenAI 的企业级 API(明确不参与模型训练)。用户可在 /settings 切换 provider 或回退到系统默认。AI 收到的输入仅限当前账户的 mock 广告数据快照 — 永远不发送原始 OAuth 令牌、密码哈希、或其他用户的数据。

路线图与合规

  • SOC 2 Type II 审计计划 2026 Q4 启动
  • CSP 从 Report-Only 切到强制模式(观察期收完后)
  • 可选 SCIM / SAML SSO(企业版)
  • 关键事件邮件通知(新设备登录、API key 创建)
看到 bug、漏洞或文档错误?请发邮件至 security@7275.com,我们 24 小时内回复。

还有问题?

直接发邮件给我们的工程团队,通常 1 个工作日内回复。