用途:为使用 Apify 的项目提供安全加固实践,聚焦 API Token、Actor 数据、代理凭据与 Webhook 校验。
背景与前提:Apify 使用个人 API Token(前缀 apify_api_)进行全部认证,单个 Token 即拥有完整账户权限,没有按 Token 划分的作用域,因此 Token 保管是核心。前提包括可访问 Apify Console、了解环境变量、可使用部署平台的密钥管理。
主要能力:
- 安全存储 Token:写入 .env,禁止硬编码;将 .env、.env.*.local、storage/ 加入 .gitignore;启动时校验存在性与前缀,缺失即抛错。
- 按环境隔离:dev/staging/prod 使用不同 Token(理想情况下不同账户),通过各平台密钥库注入,如 gh secret set、vercel env add、GCP Secret Manager。
- Token 轮换:先生成新 Token(旧的仍有效),推送到所有环境,验证可认证后再吊销旧 Token。
- Webhook 校验:Apify 不对 Webhook 签名,需确认 payload 中的 run ID 真实存在,或用共享 URL 密钥并配合 crypto.timingSafeEqual 比对。
- Actor 数据安全:pushData 前脱敏敏感字段,敏感数据集保持私有、使用命名数据集。
- 代理安全:不要记录 proxyConfig.newUrl()(内含代理密码),只记录代理组。
使用方式:按六步加固顺序执行,完整可复制代码见 references/implementation.md,端到端场景见 references/examples.md。
产出:包含排除 .env* 与 storage/ 的 .gitignore、启动 Token 校验器、各环境独立 Token、轮换流程与安全清单、拒绝未验证运行的 Webhook 处理、存储前脱敏 PII 的流水线。
限制与说明:Apify 不支持按 Token 的作用域权限;Webhook 无签名机制,只能采用替代校验;其他如健康检查、限流与监控见 apify-prod-checklist。
泄漏应急:立即在 Console > Settings > Integrations 重新生成 Token,检查近期 Actor 运行与账单,必要时轮换代理密码,并用 git log --all -p -- '.env' '.json' | grep apify_api_ 审计历史。