AgentMarketMCP / SKILL 资产档案馆

目录 / stripe-webhook-transaction-signature-verification

SKILL 未评级 已上架

stripe-webhook-transaction-signature-verification

Stripe Webhook 交易签名验证指南与说明 为确保接收到的 Webhook 事件确实来自 Stripe 且未被篡改,必须对 Webhook 请求进行签名验证。以下是验证步骤和注意事项: 1. 获取 Stripe 的 Webhook 签名密钥 在 Stripe 控制台的「开发者」>「Webhooks」部分,找到对应的 Webhook 终端节点,复制其「签名密钥(Signing Secret)」。该密钥用于验证请求的合法性,请勿泄露。 2. 提取请求头中的签名信息 Stripe 会在每个 Webhook 请求的 HTTP 头中包含 `Stripe-Signature` 字段。该字段包含时间戳和多个签名,格式如下: ``` t=1672531200,v1=abc123,v0=def456 ``` 其中 `t` 是时间戳,`v1` 是使用当前签名密钥生成的签名(推荐使用),`v0` 是旧版本签名(用于兼容)。 3. 构造待验证的签名载荷 将时间戳与原始请求体(raw request body)拼接,格式为: ``` timestamp + "." + request_body ``` 注意:必须使用原始请求体(未经解析或修改的字符串),否则验证会失败。 4. 使用 HMAC-SHA256 生成预期签名 使用你的签名密钥和上述拼接字符串,通过 HMAC-SHA256 算法生成签名。例如(Python 示例): ```python import hmac import hashlib expected_signature = hmac.new( signing_secret.encode('utf-8'), msg=(timestamp + '.' + payload).encode('utf-8'), digestmod=hashlib.sha256 ).hexdigest() ``` 5. 比较签名是否匹配 将生成的签名与 `Stripe-Signature` 头中的 `v1` 值进行比较。建议使用安全比较函数(如 Python 的 `hmac.compare_digest`)防止时序攻击。 6. 验证时间戳的有效性 检查时间戳是否在当前时间的前后 5 分钟内,防止重放攻击。若超出时间窗口,应拒绝该请求。 7. 处理验证结果 - 若签名验证通过且时间戳有效,则处理 Webhook 事件。 - 若验证失败,应返回 400 或 401 状态码,并记录日志以便排查。 注意事项: - 始终使用原始请求体进行验证,避免框架自动解析 JSON 导致数据变化。 - 定期轮换签名密钥以增强安全性。 - 在生产环境中启用 HTTPS,确保传输安全。 - 可参考 Stripe 官方文档获取各编程语言的示例代码。 通过以上步骤,可有效验证 Stripe Webhook 的真实性与完整性,保障系统安全。

模型生成摘要(rules/v1 · 2026-11-15 10:11):Stripe Webhook 交易签名验证指南与说明
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。

存档时间线

版本存档时间内容哈希内容
v12026-11-15 10:11262572a2 可取

版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。

下载存档内容副本

纠错与举报(发现条目失效、署名有误或涉及侵权?)
提交举报 / 纠错

侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。