Webhook回调安全性

时间:2012-08-29 13:31:56

标签: web-services security authentication webhooks

我向客户提供网络服务。我想提供一项功能,在某些情况下,我会通过向客户提供的URL发送请求来通知客户。

例如,订单发货通知可能会通过GET请求https://customer.example.com/order/12345?status=shipped

发送

客户如何信任此请求是真实的?

当客户收到此请求时,他们需要验证该请求是否真的来自服务,它是否已被篡改,并且是私有的。

仅考虑通过SSL发送给客户,但要求客户运行带有签名证书的启用SSL的Web服务器。另外,要对服务进行身份验证(此请求中的客户端)需要客户端证书。但是,SSL应该处理加密,中间人,消息签名和重放攻击。

服务的IP地址可能会发生变化,因此无法进行身份验证。

PayPal的IPN系统使用另一种方法。 PayPal向客户(此示例中的商家)发送通知,然后客户通过SSL将有效负载发送回PayPal以进行确认。基本上问:“嘿,PayPal。你有没有把它寄给我?”

您能想到其他方法吗?

1 个答案:

答案 0 :(得分:1)

即使您使用私钥/公钥对对邮件进行签名,也需要实施一些措施来防止重播攻击。

或许更好的方法是通知他们他们有新的东西,然后让他们到你的服务器来获得新东西。然后,他们可以简单地轮询您的服务器并验证您的SSL证书。

在向他们发送任何数据之前,您需要对他们进行身份验证。

对于通知,您只需向他们发送最新通知的签名日期和时间即可。这样,即使重播了该通知,他们也会知道,因为时间和日期不会比最后一个更新。