保护您的facebook chatbot webhook的最佳做法是什么?

nat*_*ate 1 facebook-chatbot

我在facebook messenger平台上开发聊天机器人.我浏览了Facebook文档,无法找到如何保护我webhook的随机通话.

例如,如果用户可以使用我的机器人购买东西,那么知道某人的userId的攻击者可以通过拨打我的webhook来开始放置未经授权的订单.

我有几个关于如何保护这个的想法.

1)将我的api白名单只用于来自facebook的电话.
2)使用回发调用创建类似CSRF令牌的东西.

有任何想法吗?

CBr*_*roe 6

Facebook当然已经实施了一种机制,您可以通过该机制检查对您的回调URL的请求是否真实(其他一切都只是疏忽) - 请参阅https://developers.facebook.com/docs/graph-api/webhooks #adceupdates:

HTTP请求将包含一个X-Hub-Signature标头,其中包含请求负载的SHA1签名,使用app secret作为密钥,并带有前缀sha1=.您的回调端点可以验证此签名以验证有效负载的完整性和来源

请注意,计算是在有效负载的转义unicode版本上进行的,使用小写十六进制数字.如果您只是根据解码的字节进行计算,最终会得到不同的签名.例如,字符串äöå应该转义为\u00e4\u00f6\u00e5.