我已经构建了一个Express.js应用程序,该应用程序充当Facebook潜在客户数据的网络挂钩,并订阅了Leadgen事件。
我的问题 我如何保护此Webhook,使其只能由Facebook直接访问,而不能由任何其他来源访问。
我已经在cors-module上尝试过此操作,但是任何设置白名单原点('http://facebook.com','https://facebook.com')的尝试都失败了。 我怀疑Facebook在标头中没有包含此URL,而是使用了非常动态的来源。
我该如何实现?
答案 0 :(得分:1)
[CORS是客户端,webhooks是服务器到服务器的-因此不适用于此处。]
您只想通过任何通知播放量来验证Facebook发送的SHA-1签名-https://developers.facebook.com/docs/graph-api/webhooks/getting-started#validate-payloads:
我们使用SHA1签名对所有事件通知有效负载进行签名,并将签名包含在请求的
X-Hub-Signature
标头中,并以sha1=
开头。您不必验证有效载荷,但您应该这样做。