安全,直白地说。
没有徽章墙:这里是今天产品中实际存在、可验证的具体控制。欢迎提出尖锐的问题:hello@pauli.xyz。
传输与认证
- 仅 TLS 入口。API 只绑定环回地址;唯一的公开入口在边缘终结 TLS,bearer 密钥绝不明文传输。
- 密钥哈希存储,仅显示一次。静态存储为 SHA-256 哈希;明文只在创建或轮换时返回一次。轮换与吊销即时生效。
- 每次查询都隔离工作区。在持久层限定范围;跨租户读取返回 404 而不是 403。
- 按密钥限流。Redis 上的令牌桶;限流失效时放行还是拒绝由运营者选择。
Webhook
- 签名的载荷。对载荷的原始字节做带时间戳的 HMAC-SHA256(
X-Pauli-Signature),被截获的投递只能在您的验证容差内重放;密钥轮换期间以新旧两个密钥同时签名。X-Pauli-Event-Id用于去重。 - 双重 SSRF 防护。Webhook URL 仅限 https;解析到非公网地址(环回、RFC 1918、链路本地、云元数据)的 URL 在提交时被拒绝,投递时再次检查以防 DNS 重绑定。始终开启,没有关闭开关。
资金与数据完整性
- 端到端 Decimal。资金绝不经过浮点数;API 金额是精确的十进制字符串。
- 数据库强制的严格一次计费。部分唯一索引保护收费、扣款与退款;重试和重复投递不可能重复扣款或重复入账。
- 资金确认后才入账。Stripe Webhook 带重放容差做签名验证;状态的 compare-and-swap 使入账幂等。
- 只追加的审计日志。密钥生命周期、作业事件、计费、合规决定与失败的认证,与对应操作写在同一个事务里。
运维
- 唯一的事实来源。全部状态都在 Postgres;丢失队列不会丢失任何作业、结果或资金。
- 崩溃安全的处理。Worker 以租约认领作业,在每个阶段边界提交;清扫任务会重新推导出死亡进程丢下的所有工作。
- 经验证的备份。按计划做恢复测试(没有恢复过的备份不算备份);加密副本运出主机之外。
- 错误绝不泄露内部信息。5xx 响应体只含稳定的错误码和请求 ID;细节只留在服务器端日志。
- 公开状态页。托管在我们基础设施之外的 status.pauli.xyz,我们不可达时它依然可达。
合规姿态
- 路由器内置出口管制门。受管制的硬件只路由到已通过筛查、申报了管辖区的工作区;每次拒绝都被审计。
- 受限对象筛查。每个筛查决定都被审计;路由在每次请求时读取它。
关于 SOC 2:当客户需要时我们会进行认证,并可应要求填写安全问卷。
报告漏洞
请将复现步骤发送至 hello@pauli.xyz。我们会在两个工作日内确认收到,并且不会对善意的安全研究采取法律行动。