安全声明

最后更新:2026-09-24

本声明说明 NotionManager 如何保护你的数据与凭据,以及我们的边界在哪里。它与《隐私政策》互补:隐私政策回答"我们收集什么",本声明回答"我们怎么保护、以及我们不承诺什么"。文中每一条技术描述都来自当前版本的实现与发布流程。

本文只负责"谁能拿到"。 备份里包含什么、什么情况下会不完整、以及怎么验证它可用,属于另一个问题,写在配套的《数据完整性说明》里。两份文档各说一件事,互不重复。

安全是一个整体属性

安全不是某个功能,而是整套系统放进真实环境之后呈现出来的性质。好的设计是一切的起点,但运行环境往往比设计更能决定结果:这台机器谁在登录、磁盘有没有加密、备份最终存放在哪种介质上、所在网络里还有谁、Notion 那边的集成共享给了哪些页面——这些大多不在我们的控制范围内。

所以我们能做的,是把软件这一侧守住:NotionManager 尽最大努力不暴露安全风险、不扩大攻击面。 具体来说——不引入我们无法负责的通道(没有遥测、没有后台自动更新、没有中转服务器),只申请完成工作所需的最小权限(对 Notion 只读),把敏感信息留在你自己的机器上;凡是做不到的地方(局域网服务没有 TLS、本地加密的密钥随程序分发、安装包尚未签名)都如实写清楚,而不是含糊过去。

请把本文当作两部分来读:前面几节讲我们做了什么,第 9 节讲我们没做到什么、以及需要你配合什么。安全来自"一个尽量小的软件"加上"一个你了解并掌控的环境"——缺一半都不成立。

摘要

  • NotionManager 是本地优先的桌面程序:备份、索引、浏览全部在你自己机器上完成,我们不运营任何接收、查看或保存你 Notion 内容的服务器。
  • 对 Notion 只发起读取请求,集成只能访问你显式共享给它的页面与数据库。
  • 不收集遥测、使用统计或崩溃报告,不接入任何分析、广告或行为追踪 SDK。
  • 当前版本没有后台自动更新通道:新版本由你从官网或 GitHub Releases 手动下载安装。
  • 应用的出网目标只有两个:Notion API,以及仅在你激活/校验授权时使用的许可服务。
  • 授权一次性买断,令牌由 RSA-PSS 签名、客户端离线验签,并与本机绑定。
  • 已知边界(请务必阅读第 9 节):本地凭据加密的密钥随程序分发,不能替代磁盘加密;"远程浏览"是局域网内的 HTTP 服务,没有 TLS;安装包当前未做代码签名与公证。

1. 数据在哪里

  • 备份引擎、数据库索引与浏览界面都在本机运行。每次备份写入你为该 profile 指定的目录,索引与快照保存在仓库内的本地 SQLite 文件中。
  • 我们不运营任何中转:没有账号体系、没有云端副本、没有"先上传再下发"的环节。你机器上的那些文件就是全部——我们看不到它们。
  • 哪些对象会进入备份、以及它的完整性边界,见《数据完整性说明》。仓库目录完全由你掌控:删除目录即删除备份。

2. 与 Notion 的权限边界

  • 应用使用你自己的 Notion internal integration(同样支持 Personal Access Token)访问工作区。凭据由你创建、由你保管、随时可在 Notion 侧撤销。
  • 应用对 Notion 只发只读请求(api.notion.com)。代码中不存在创建、修改或删除页面、块、数据库的调用;即使你提供的 token 带有写权限,程序也不会使用它。
  • 集成默认只能看到你显式共享给它的内容。建议只共享需要备份的根页面,并在集成设置里保持只读能力。
  • 撤销方式:在 Notion 中取消共享或删除该集成。撤销后本机保存的 token 立即失效,应用无法再读取任何内容。

3. 凭据如何存放

  • integration token 与"远程浏览"密码不以明文落盘:它们保存在本地元数据库的加密字段中(AES-256-CBC,密钥由程序内常量经 scrypt 派生)。
  • 这道加密的目的是让凭据不出现在配置文件、日志与导出归档里。它不能防护已经能读取你磁盘的人,因为密钥随程序分发。你真正的边界是操作系统账户与磁盘加密:请启用 BitLocker / FileVault / LUKS,并设置账户口令。
  • token 只用于访问 Notion API 与你自己的本机服务,不发送给任何其他第三方,也不会写入导出的 profile 归档。
  • 导出的 profile 归档只包含元数据(名称、仓库路径、计划、保留策略、条目清单)与备份数据,不含 token、授权令牌或远程浏览密码;导入到新机器后需要重新填写 token。

4. 远程浏览(付费功能,默认关闭)

  • 开启后,应用在本机启动一个 HTTP 服务,把备份以网页形式提供给同一网络内的其他设备(手机、平板、另一台电脑)。默认端口 8732;绑定地址默认是所有网卡,这样局域网里的设备无需额外配置即可访问——这是为方便非技术用户刻意保留的默认值。
  • 每个请求都要求 HTTP Basic 认证;凭据以 SHA-256 摘要做定时安全比较,密码加密存储,失败响应不区分"用户名错"还是"密码错"。
  • 远端接口是只读的浏览接口:不返回 token,也不返回仓库路径,远端只能看到一个剔除敏感字段的 profile 列表。
  • 静态文件与附件的路径会被归一化并限制在仓库目录内,无法用 .. 逃逸。
  • 该服务没有 TLS:口令与内容在同一网络内以明文传输。因此请只在可信网络中使用——家庭或公司的局域网、你自己的 VPN;不要把它直接暴露到公网,也不要放在你不信任的网络(公共 Wi-Fi、共享办公网、访客网络)中。需要跨公网访问时,请放在你自己的 TLS 反向代理或 VPN 之后。

5. 应用会连接哪些服务

应用只与两类外部服务通信:

  1. Notion API(api.notion.com):备份过程中读取你的工作区数据,直接在你的机器与 Notion 之间进行。
  2. 许可服务(lic.notionmanager.com):仅在你激活或校验授权时通信,用于向支付服务商确认授权并取回签名令牌。它收到的是许可密钥、install_id(见第 6 节)以及支付服务商侧已有的订单与邮箱信息;它不会收到你的工作区内容。

此外:

  • 没有遥测、没有使用统计、没有自动崩溃上报,也没有任何分析、广告或行为追踪 SDK。
  • 当前版本不建立后台自动更新通道:新版本通过官网与 GitHub Releases 发布,由你手动下载安装。
  • 本地日志仅用于排障,保存在本机。如果你主动把日志发给支持,请先确认其中没有你不想外发的内容。

6. 许可证、签名与设备绑定

  • 授权是一次性买断,不是订阅。授权令牌由许可服务用 RSA-PSS/SHA-256 签名,客户端用内置公钥离线验签;激活请求以 RSA-OAEP + AES-256-GCM 信封传输。
  • install_id 由本机指纹(系统 machine-id,缺失时退化为 hostname|platform|arch|CPU 型号)经 SHA-256 计算得出,每次启动重新计算、不落盘。它的唯一用途是标识设备以做授权校验与激活名额计数,不包含也不关联你的个人信息。令牌因此与本机绑定:复制到另一台机器无效,把别人的 install_id 连同密钥发给我们也无效。
  • 激活成功后再无周期性回连,已购功能离线也能长期使用。

7. 分发与安装包校验

  • 安装包发布在 GitHub Releases,每个版本随附 SHA-256 校验值,下载页给出校验命令。请在安装前核对。
  • 校验值不匹配说明文件被篡改或损坏:请丢弃并从官方渠道重新下载。
  • 当前安装包未做代码签名与公证(macOS 构建未启用 hardened runtime,Windows 未配置签名证书),因此系统可能提示"来自未知开发者"。这是已知现状,见第 9 节。

8. 网站与支付

  • 官网是预渲染的静态站点,托管在 Vercel;字体自托管,页面不加载第三方分析、广告或追踪脚本。语言与主题偏好保存在你自己浏览器的 localStorage 中。
  • 结账由支付服务商完成(Paddle 作为商户记录方,另有 Dodo Payments 渠道):卡号与支付信息只提交给支付服务商,我们既不接触也不保存。官网不收集、也不需要你的 Notion token。
  • 只有你主动提交的内容(支持邮件、评论、退款申请)会被我们保存,用于回复与展示。

9. 已知边界与明确不承诺

  • 本地加密不是本地防护:见第 3 节,请配合磁盘加密与账户口令。
  • 远程浏览没有 TLS:见第 4 节。它被设计为局域网/VPN 内使用的便利功能,不是为公网暴露设计的。
  • 安装包未签名、未公证:我们无法通过系统签名链向你证明二进制来源,请以 GitHub Releases 上的 SHA-256 校验值为准。
  • 备份是否完整,不在本文范围内:备份包含什么、哪些内容不会出现(Notion API 的权限范围与已知缺口)、以及我们建议的 3-2-1 保留副本做法,都写在《数据完整性说明》里。本文只管"谁能拿到",不重复那部分。
  • 不提供漏洞赏金计划,也不提供 SLA:这是一次性买断的软件产品,安全响应按第 10 节的承诺执行。

10. 报告安全问题

  • 安全问题请发送到 security@notionmanager.com;一般咨询、功能建议与退款事宜请发送到 support@notionmanager.com。
  • 报告中请尽量包含:软件版本、操作系统、复现步骤、影响范围,以及你的判断。必要时请用测试工作区复现,不要附带真实的工作区数据。
  • 请勿在公开渠道(issue、论坛、社交平台)披露尚未修复的问题。
  • 我们的承诺:3 个工作日内确认收到;确认后同步修复计划与时间线;修复发布后,在发布说明中致谢(如你同意具名)。