微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web-services – Webhook回调安全性

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

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

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

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

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

服务的IP地址可以更改,因此不用于身份验证.

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

你能想到其他任何方法吗?

解决方法

即使您使用私钥/公钥对签名,您也需要实施一些防止重放攻击的内容.

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐