首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了签名外,还可以验证IP地址?

问除了签名外,还可以验证IP地址?
EN

Stack Overflow用户
提问于 2022-08-15 23:11:00
回答 1查看 114关注 0票数 0

我正在使用Next.js应用程序中的webhooks来处理来自Stripe的客户支付事件。类似于文档中的示例,我的web钩子做的第一件事就是验证传入事件的签名:

代码语言:javascript
复制
const webhookSecret = process.env.SECRET_STRIPE_WEBHOOK

const webhookHandler = async (req, res) =>
{
  if (req.method === 'POST')
  {  
    const buf = await buffer(req)
    const sig = req.headers['stripe-signature']

    let event

    try
    {
      event = stripe.webhooks.constructEvent(buf.toString(), sig, webhookSecret)
    }
    catch (error)
    {
      const errorMessage = error instanceof Error ? error.message : 'Unknown error'
      // On error, log and return the error message
      if (error instanceof Error) console.log(error)
      console.log(`Error message: ${errorMessage}`)
      res.status(400).send(`Webhook Error: ${errorMessage}`)
      return
    }

    // The rest of the webhook
  }
}

但是,这些文档也提到了只有来自这些IP地址的信任事件,并提供了一个列表,其中包含了可能产生web钩子事件的IP地址。

出于安全考虑,是否还需要检查传入事件的IP地址,还是上述验证签名的实现涵盖了所有基础?docs解释说,通过Stripe的库验证签名确实可以防止重放攻击,但在同一句话中仍然提到验证IP地址。

如果验证IP地址是必要的或谨慎的事情,我如何添加到上面的实现?我在Stripe文档上找不到例子。

EN

回答 1

Stack Overflow用户

发布于 2022-08-15 23:36:10

验证IP地址是一个额外的安全层,以确保请求来自Stripe。几年前,这是最好的方法,因为webhook签名不存在,但是自从他们提供了这个特性之后,我认为大多数开发人员都默认使用这种方法。攻击者自己无法计算签名,尽管他们可以找到重放请求的方法。我要说的是,大多数集成都不需要考虑IP允许列表。

如果要实现这一点,则需要查看路由服务器端与请求关联的IP地址。这是用NextRequest完成的,尽管这个答案中还有其他解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73367246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档