安全模型

Passerelle 的设计使得长期凭证既无法到达浏览器,也不会出现在 URL 中。每一项加固都在源码中就地记录

与秘密绑定的握手

每个守护进程使用每机器独有的秘密注册。用不同秘密声称同一 machineId 的重新注册会被拒绝,因此在重连窗口内,已知的机器 ID 无法被劫持。

令牌永不离开服务器

长期会话令牌仅存于网关上一个经 httpOnly、AES-256-GCM 加密的 cookie__Host-passerelle_sessions)中。浏览器从不接收它,因此仪表盘上的 XSS 无法窃取它。

一次性交接码

打开服务时不会带着令牌重定向。网关通过可信 WebSocket 向守护进程推送一个一次性交接码,然后仅以 ?code=<code> 重定向浏览器。守护进程将该代码一次性兑换为 httpOnly cookie。因此令牌永远不会出现在历史记录、Referer 或访问日志中。

PIN 轮换

用于验证机器的 PIN 在使用后立即失效,包括在 headless(PM2)模式下。

SSRF 防护

代理在转发前拒绝私网与链路本地目标地址,阻断将隧道用作内部 SSRF 探测的尝试。

速率限制

PIN 验证、代理与公开端点各自带有按 IP 的限流,以削弱暴力破解与滥用。

纵深防御

  • 守护进程以最低权限在 PM2 下运行。
  • 网关容器丢弃所有 Linux capabilities 并禁止提权。
  • 版本策略端点让网关能向过时的守护进程与 PWA 发出警告。