SuperAPI AI 工具集

webhook-security

安全与审计

查看项目

更新于 10-16 08:41

技能介绍

用途:为支付集成(Stripe、PayPal 等)实现 webhook 安全校验与处理,避免伪造事件、重放攻击与重复处理。

主要能力:

  1. 签名验证:按 Stripe 算法提取时间戳与签名,构造 timestamp.raw_body,用 HMAC-SHA256 与 webhook 密钥计算并比较签名,校验时间戳容差(默认 5 分钟)。
  2. 防重放:时间戳校验、事件 ID 追踪、签名验证、幂等键,拒绝超过容差窗口的事件。
  3. 事件日志与审计:记录原始 payload、事件类型与 ID、接收时间、处理状态、错误信息、关联用户;日志保留 90 天以上用于争议处理。
  4. 本地测试:结合 Stripe CLI 将 webhook 转发到本地开发服务器并触发测试事件。
  5. 密钥管理:密钥通过环境变量注入,禁止硬编码或提交真实密钥,建议每季度轮换。
  6. 错误处理与重试:200 成功、400 永久失败(不重试)、401 签名无效(不重试)、500 临时失败(触发重试);处理应幂等、异步队列化、5 秒内响应。

使用方式: 运行 setup-webhook-endpoint.sh 配置端点:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/setup-webhook-endpoint.sh stripe 签名校验:python /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/verify-signature.py 本地转发测试:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/test-webhook-locally.sh 生成密钥:bash /home/gotime2022/.claude/plugins/marketplaces/ai-dev-marketplace/plugins/payments/skills/webhook-security/scripts/generate-webhook-secret.sh 多供应商:for provider in stripe paypal square; do bash .../setup-webhook-endpoint.sh $provider; done

适用场景:Stripe/PayPal 订阅、一次性支付、退款、拒付等事件的安全接收与处理,生产部署前的端到端测试。

依赖与限制:需 Python(FastAPI、stripe、sqlalchemy、pydantic、python-dotenv、httpx)、Stripe CLI、ngrok/localtunnel、pytest、requests;需数据库表 webhook_events 及索引;需配置 STRIPE_API_KEY、STRIPE_WEBHOOK_SECRET、PAYPAL_CLIENT_ID、PAYPAL_CLIENT_SECRET、PAYPAL_WEBHOOK_ID、DATABASE_URL 等环境变量。生产环境须使用 HTTPS,端点不应公开暴露,需限流与监控。资料未提供具体定价与性能数据。