返回顶部
W

WebhookWebhook实现

Implement secure webhook receivers and senders with proper verification and reliability.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
3,307
下载量
免费
免费
3
收藏
概述
安装方式
版本历史

Webhook

接收:签名验证

  • - 始终验证HMAC签名——负载可能被伪造;未经签名验证不可信任
  • 常见模式:将HMAC-SHA256(密钥, 原始请求体)与头部值进行比较
  • 使用原始请求体字节——解析后的JSON可能重新排序键值,导致签名失效
  • 采用时间安全比较——防止针对签名检查的时间攻击
  • 对缺失或无效签名返回401拒绝——记录日志以便调查

接收:重放防护

  • - 检查负载或头部中的时间戳——若时间过久(超过5分钟)则拒绝
  • 与签名结合使用——无签名的时间戳可被伪造
  • 存储已处理的事件ID——即使在同一时间窗口内也拒绝重复事件
  • 时钟偏差容忍度:允许1-2分钟偏差——但不可长达数小时

接收:幂等性(关键)

  • - Webhook可能多次到达——发送方因超时、网络问题会重试
  • 使用事件ID进行去重——将已处理的ID存储在数据库/Redis中
  • 使处理器具备幂等性——同一事件处理两次应产生相同效果
  • 幂等窗口期:保留ID 24-72小时——在存储成本与防护效果间取得平衡

接收:快速响应

  • - 立即返回200/202——在队列中异步处理
  • 发送方通常设置超时(5-30秒)——处理缓慢会导致重试和重复
  • 在返回200前仅做最小验证——验证签名后即入队列
  • 实际处理由后台任务执行——失败不影响确认响应

接收:错误处理

  • - 2xx状态码表示成功,发送方不会重试
  • 4xx状态码表示永久性失败,发送方可能停止重试——用于签名错误、未知事件类型
  • 5xx状态码表示临时性失败,发送方会重试——用于下游系统问题
  • 错误时记录完整负载——有助于调试;需脱敏敏感字段

发送:重试策略

  • - 指数退避:1分钟、5分钟、30分钟、2小时、8小时——之后放弃或告警
  • 设置重试上限(5-10次)——避免无限重试
  • 记录每次投递尝试——向用户展示状态
  • 对4xx和5xx采用不同重试策略——4xx通常意味着停止重试

发送:签名生成

  • - 在签名中包含时间戳——防止已捕获的webhook被重放
  • 对原始JSON请求体签名——明确记录签名算法
  • 头部格式:t=时间戳,v1=签名——支持版本化签名
  • 提供验证代码示例——降低集成摩擦

发送:超时设置

  • - 设置5-10秒超时——不无限等待慢速接收方
  • 将超时视为失败——稍后重试
  • 不跟随重定向——或限制为1-2次;防止重定向循环
  • 验证HTTPS证书——不跳过验证

事件设计

  • - 包含事件类型:{type: order.created, ...}——接收方按类型过滤
  • 包含时间戳:带时区的ISO 8601格式——用于排序和时效性判断
  • 包含完整资源或ID——优先提供完整数据;节省接收方查询开销
  • 版本化事件:添加api_version字段——支持破坏性变更

投递追踪

  • - 记录每次尝试:URL、状态码、响应时间、响应体
  • 提供重试队列仪表盘——让用户查看待处理/失败的投递
  • 提供手动重试按钮——用于接收方修复后重新发送卡住的webhook
  • Webhook日志保留期:7-30天——在调试需求与存储成本间平衡

安全清单

  • - 仅使用HTTPS——绝不向HTTP端点发送webhook
  • 定期轮换密钥——轮换期间支持多个活跃密钥
  • IP白名单可选——若提供此功能需记录IP范围
  • 不在负载中包含密钥——webhook URL本身应足够保密
  • 按端点限流——单个慢速接收方不应影响其他端点

常见错误

  • - 未验证签名——任何人都可向你的端点发送伪造事件
  • 先处理再响应——超时导致重试和重复处理
  • 未处理幂等性——重复扣费、重复记录
  • 盲目信任事件数据——关键操作务必通过源API获取数据验证

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 webhook-1776197245 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 webhook-1776197245 技能

通过命令行安装

skillhub install webhook-1776197245

下载

⬇ 下载 Webhook v1.0.0(免费)

文件大小: 2.46 KB | 发布时间: 2026-4-15 10:18

v1.0.0 最新 2026-4-15 10:18
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部