Camofox Browser
保护 Camofox:全局访问、用户状态授权、网络出口与遥测
阅读真实密钥策略,避免暴露未认证浏览器服务,并盘点配置档、跟踪、上传和崩溃上报。
你将学会
- API key 与全局访问密钥保护不同范围。
- HTTP/HTTPS 校验不能替代网络出口策略。
- 配置档、跟踪和遥测需要明确保留与披露决定。
开始前需要
- 基础 HTTP 与 JSON 知识
- 隔离服务与自有或获准测试页面
解释本章真实服务边界,并核验建议的观察或生命周期样例。
先看结论
- API key 与全局访问密钥保护不同范围。
- HTTP/HTTPS 校验不能替代网络出口策略。
- 配置档、跟踪和遥测需要明确保留与披露决定。
全局访问与敏感路由密钥是不同控制
lib/auth.js 实现全局 CAMOFOX_ACCESS_KEY 检查,以及敏感路由使用的 requireAuth 辅助函数。没有全局密钥时,中间件为兼容旧行为直接放行。因此不能把只设置 CAMOFOX_API_KEY 描述为自动保护整个服务。应检查路由覆盖、配置全局边界,并在有意安全开放前保持私有监听。
逐路由辅助函数接受 API key 或配置的 access key;二者都没有时,仅在非生产环境允许 socket 层回环请求,否则拒绝。全局层有健康及配置专用密钥路由等例外,这些差异应成为验收测试。共享 Bearer 秘密也不会自动为调用方提供的 userId 建立逐用户所有权规则。
浏览器导航本身是一种网络能力
所查 validateUrl 解析 URL 并允许 HTTP 或 HTTPS,这并非目标允许列表、DNS 策略或完整私网保护。远程可达的浏览器服务需要在这个窄辅助函数之外限制目的地和网络出口,并在自有环境测试跳转与资源请求。不能仅因 URL 以 https 开头就推断安全。
Cookie、持久配置档、上传、下载和跟踪归档形成额外数据边界,配置为其中多种产物指定独立目录。服务应只获得必要文件权限,秘密由适当机制保管,每类产物都定义删除和备份政策。不要仅为填充演示就导入个人浏览器的账户状态。
诊断也是数据处理,不是零成本可观测性
所查配置中,除非 CAMOFOX_CRASH_REPORT_ENABLED 是字符串 false,否则崩溃上报启用。报告器可通过中继发送报告,并进行脱敏和域名哈希。这些处理能降低暴露,但不能证明所有诊断都不敏感。处理私有页面前应先决定是否上报,本地部署样例明确关闭它。
会话跟踪另外选择启用,可能包含截图、DOM 快照和网络信息。所查标签创建路径在已有未跟踪会话上启用跟踪时返回冲突,而不是悄悄切换。需要时应计划新隔离测试会话,不能为强行演示而删除活动用户历史。本次没有导入凭据、访问外部账户或探测生产端点。
实施步骤
- 1
验证未授权普通路由被配置的边界拒绝。
- 2
强制检查 userId 所有权及允许的目的地。
- 3
盘点数据目录、备份和跟踪保留。
- 4
访问私有内容前决定崩溃上报政策。
可复制示例
{
"globalAccessGate": "必需",
"userIdOwnership": "由调用方边界强制检查",
"allowedDestinations": "仅自有样例",
"crashReporting": "私有测试中关闭",
"trace": false,
"credentialsImported": false
}常见问题
CAMOFOX_API_KEY 保护所有路由吗?
不能假设如此。所查代码有独立全局访问密钥中间件,没有该密钥时会放行。
URL 校验阻止所有不安全目的地吗?
不能。所查辅助函数限制协议;目的地与网络控制需要更完整策略。
资料来源
- README.md来源核查 2026-09-08
- package.json来源核查 2026-09-08
- Dockerfile来源核查 2026-09-08
- lib/auth.js来源核查 2026-09-08
- lib/snapshot.js来源核查 2026-09-08
- lib/extract.js来源核查 2026-09-08
- lib/config.js来源核查 2026-09-08
- lib/reporter.js来源核查 2026-09-08
- lib/page-lease.js来源核查 2026-09-08
- server.js来源核查 2026-09-08
- tests/unit/snapshot.test.js来源核查 2026-09-08
- tests/unit/auth.test.js来源核查 2026-09-08