TODO(法务)本文本由工程起草、未经法律审阅。清单以 lib/auth.ts 的实现为准:Focus3 目前只设置两个 cookie,都是「必需类」,没有分析、广告或营销 cookie,因此也没有 cookie 同意横幅。
CookiesCookie 说明
Focus3 只在维持登录和完成 X 登录跳转这两件事上使用 cookie,一共两个,都是 httpOnly 且 SameSite=Lax。禁用它们会导致无法登录,但站点的浏览与公开日页仍然可用。
1. 我们实际设置的 cookie
| 名称 | 类别 | 用途 | 有效期 |
|---|---|---|---|
focus3_session | 必需 | 保持登录状态。值是 32 字节随机令牌;数据库里只保存它的 SHA-256 摘要,服务端拿不到明文令牌。 退出登录会立即在服务端撤销该会话并删除 cookie。 | 30 天(或直到你退出登录 / 删除账号) |
focus3_oauth_state | 必需 | 只在你点击「用 X 登录」到 X 回调完成之间存在,携带本次登录的 state、PKCE verifier 与 nonce (带签名,防止被篡改),用于确认回调确实由你发起。 | 10 分钟;回调成功时立即删除 |
两个 cookie 都设置为:HttpOnly(JavaScript 读不到)、SameSite=Lax、Path=/; 当站点通过 HTTPS 访问时同时设置 Secure。
2. 我们不使用的 cookie
- 没有分析或统计 cookie(仓库里没有接入任何分析 SDK)。
- 没有广告、再营销或跨站追踪 cookie。
- 没有第三方 cookie 由 Focus3 主动写入;页面也不使用 localStorage / sessionStorage 保存业务数据。
- 因此本站不展示 cookie 同意横幅 —— 只设置必需 cookie 时不需要取得同意。若将来新增非必需 cookie,会先补上同意机制与本文更新。
3. 与 cookie 无关的第三方请求
页面会从 Google Fonts 加载字体样式与字体文件。这不是 cookie,你的浏览器会直接连到 Google 并因此暴露 IP 与 User-Agent。除此之外,只有公开日页上的卡片图片和数据请求会到达 focus3.top 自己的服务器。
4. 如何管理
- 你可以在浏览器设置里查看、删除或阻止本站的 cookie。
- 阻止
focus3_session会导致无法保持登录;阻止focus3_oauth_state会导致 X 登录无法完成。 - 删除账号会撤销全部会话,等同于在所有设备上退出登录。