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证书.

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

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

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些