流行的SMS服务Twilio允许应用程序在发送SMS消息后通过调用Twilio API接收下游消息事件的状态回调。
我们的应用程序使用基本的auth和passport.js来管理用户,会话和保护路由。
保护从Twilio接收状态回调的POST路由的正确方法是什么,因为这些回调不会经过身份验证或签名?
(换句话说,试图在回调时保护从Twilio接收POST的路由当前返回401.移除身份验证显然允许接收和处理请求,但使路由不受保护。)
这个webhook肯定需要是一个公共端点。 通常,对于webhook,您将获得一个签名的报头,它将使您能够验证消息是否合法。
如果不是这样,您可以做的是创建一个中间件,将回调时收到的MessageSid与请求生成SMS时得到的sid进行比较。
如果消息没有MessageSid,或者MessageSid与数据库中的任何消息都不匹配,则会给出未经授权的响应。