用途:指导 Rails 应用向客户提供的 URL 推送出站 webhook(主动 POST 事件)。客户 URL 视为攻击者可控,需签名正文、将 DNS 固定到公网 IP,且订阅方故障不得阻塞触发事件。入站 webhook(Stripe、GitHub)方向相反,不适用本技能。
主要能力:SSRF 优先防护,解析主机、拒绝私有/回环/链路本地地址,并设置 http.ipaddr = 该地址,防止 TTL=0 的 DNS 重绑定指向 169.254.169.254;对 payload 做 HMAC 签名,密钥仅展示一次,头形如 X-Webhook-Signature: sha256=...;投递作为带日志行的任务,用户动作提交后 perform_later,失败重试而不回滚事件;连续失败后自动禁用。
必要用法:模型含 Webhook 与 WebhookDelivery,Webhook 用 has_secure_token :signing_secret,Delivery 记录 payload、event、attempts、response_status、signature 等。创建与投递时均做 SSRF 校验(DNS 可变)。签名:OpenSSL::HMAC.hexdigest("SHA256", signing_secret, payload)。仅允许 http/https,响应体设上限(如 100 KB)。Job 内先 with_tenant,认领行避免重复投递,5xx 与超时重试约 5 次,4xx 终止;连续 N 次失败后禁用。请求头含 Content-Type: application/json、X-App-Event、X-App-Delivery、X-App-Signature,Fizzy 还发 X-Webhook-Timestamp。
适用场景与限制:适合多租户 Rails 应用交付签名 webhook。资料未提供具体 gem、安装命令、定价或其他平台细节。