它是如何产生的?我如何验证它?
https://developer.bigcommerce.com/api/webhooks-getting-started
{
"store_id": 11111,
"producer": "stores/abcde",
"scope": "store/order/statusUpdated",
"data": {
"type": "order",
"id": 173331
},
"hash": "3f9ea420af83450d7ef9f78b08c8af25b2213637"
}
答案 0 :(得分:0)
我建议使用自定义标头验证有效负载来自BigCommerce,如getting started guide中所述:
包含一个或多个名称 - 值对的标头对象,两个字符串值(可选)。如果您选择包含标头对象,Bigcommerce将在运行时将其POST请求的HTTP标头中的名称 - 值对包含在您的回调URI中。虽然此功能可用于任何目的,但可以使用它来设置秘密授权密钥并在运行时进行检查。这提供了一个额外的保证,即POST请求来自Bigcommerce而不是其他一方,例如恶意行为者。
答案 1 :(得分:0)
此问题由开发人员推广人员@KarenWhite回答。 https://support.bigcommerce.com/s/question/0D51B00004G6kJf/incoming-webhook-posts-hash-field-in-payload
它使用SHA-1进行了哈希处理,但未使用客户端机密签名:
$payload['hash'] = sha1(json_encode($payload));
此外,有关Webhook安全的立场已记录在2018年的市政厅中 https://support.bigcommerce.com/s/article/BigCommerce-Town-Hall-February-2018
问。如何确保仅由BigCommerce启动Webhook回调,并且确保BigCommerce与服务器端点之间的数据没有改变? Webhook有效负载中返回的哈希可以用于验证请求吗?
A 。今天,我们的网络钩子包含的信息很少-它们仅包含ID。去查找其他信息。您需要获得授权才能验证ID。根据商店的API确定所需的实际信息。我们还通过TLS加密保护了Webhooks,并使开发人员能够将自己的标头添加到事件中,以提高安全性。