安全
最后更新: 2026年10月19日
QR Wait 尽可能少地保存您队列中访客的信息,并保护其余数据。本页概述具体做法;保存哪些数据、保存多久,请见隐私政策。
1. 托管与加密
QR Wait 运行在 Cloudflare 的网络上(Workers 和 Durable Objects),数据也存储在那里。所有连接均通过 HTTPS(TLS)加密,并要求浏览器在 qrwait.app 及其所有子域名上只使用 HTTPS(HSTS,一年)。
页面带有严格的内容安全策略(CSP):脚本只从 QR Wait 和 Cloudflare 加载,其他任何网站都不能在框架中显示 QR Wait。
Cloudflare 声明其持有 ISO/IEC 27001、ISO/IEC 27701 和 ISO/IEC 27018 认证(Cloudflare Trust Hub)。这些属于 Cloudflare;QR Wait 本身没有任何认证。
2. 账户与登录
- 密码只以加盐的 PBKDF2-SHA-256 哈希形式保存。出现在已知数据泄露中的新密码会被拒绝;该检查只会将其 SHA-1 哈希的前 5 个字符发送到 QR Wait 之外(k-匿名)。
- 通过身份验证器应用(TOTP)进行两步登录,并提供一次性恢复码。所有者可以看到哪些团队成员已开启。
- 团队成员有各自的角色(所有者、管理员或工作人员);如受限制,只能打开分配给他们的队列。
- 某账户在 24 小时内登录失败 5 次后,登录还需通过人机验证(Cloudflare Turnstile)。
- 从新浏览器登录账户时会发送一封邮件。
- 会话在 14 天未使用后结束;修改密码或"退出其他设备"会结束所有其他会话。
- 验证、重置密码和邀请链接只能使用一次,且只保存其哈希。
3. 速率限制
请求在 Cloudflare 边缘按 IP 地址限制:登录、注册和重置密码每分钟 10 次,加入队列每分钟 60 次,REST API 每个密钥每分钟 120 次、每个 IP 地址每分钟 120 次。
4. 访客数据
- 从不要求访客提供电话号码或电子邮件地址。只有商家为该队列开启后才会询问姓名。
- 无论队列如何设置,票号连同其中的姓名和加入表单答案,最迟在加入后 24 小时删除。
- 不保存任何位置。队列检查位置时,票号只记录到队列的距离及测量时间。
- 工作人员屏幕上显示的二维码每 15 至 75 秒更换一次,每个码有效 1 至 5 分钟,因此转发到别处的照片无法让任何人排队。
- 工作人员在面板中的操作记录保留 30 天;工作人员链接可随时收回。
5. 备份
无法重建的数据(账户、队列设置、票数余额)每天导出到 Cloudflare R2,写入前先加密:每个部分使用各自的 AES-256-GCM 密钥,该密钥再用公钥(RSA-OAEP)加密。用于解密的私钥离线保存。导出保留 35 天。
票号从不进入备份:其中包含访客姓名,且最多只存在一天。
6. 集成
- Webhook 使用只显示一次的密钥签名(带时间戳的 HMAC-SHA256),且只发送到公开的 https 地址。除非商家为某个地址允许发送姓名,否则只包含号码和时间。
- API 密钥只显示一次,并且只以 SHA-256 哈希形式保存。密钥分为只读或可读写两种,可随时撤销。
- 开发者详情:API 与 Webhook 参考文档(英文)。
7. 子处理者
以下公司代表 QR Wait 处理数据,以运行本服务:
| 公司 | 用途 | 地点 |
|---|---|---|
| Cloudflare, Inc. | 托管、存储、备份、邮件发送、人机验证(Turnstile)、安全、无 Cookie 访问统计 | 美国,全球网络 |
| Lemon Squeezy, LLC | 付款与发票(记录商家) | 美国 |
| Apple Inc. | 向 QR Wait iPhone 应用发送通知(Apple Push Notification service) | 美国 |
| Google LLC | 向 QR Wait Android 应用发送通知(Firebase Cloud Messaging) | 美国 |
| OpenStreetMap Foundation | 管理面板中的地图图块和地址搜索 | 英国 |
浏览器通知经由访客自己浏览器的推送服务发送。数据如何传出土耳其和欧盟,请见隐私政策。
8. 报告漏洞
请发送邮件至 hello@qrwait.app,主题为"Security"。我们会在 3 个工作日内确认收到,并在 10 个工作日内发送初步评估。在问题修复前请勿公开,并且只使用您自己的账户和队列进行测试。
对于善意遵守这些规则的研究,我们不会采取法律行动。没有付费漏洞奖励计划。机器可读的相同联系方式:security.txt。