【问题标题】:For GitLab WebHook, how to make sure the request is from GitLab?对于 GitLab WebHook,如何确保请求来自 GitLab?
【发布时间】:2016-03-09 22:02:15
【问题描述】:

GitLab 文档在这里:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/web_hooks/web_hooks.md

我尝试了什么:

  1. request.hostname:主机名可以伪造?
  2. request.ip:但是我不知道gitlab的ip,以后可能会变
  3. 我在创建 webhook 时试图找到类似 github 的 Secret 的东西,秘密可用于验证请求正文,但没有
  4. https:有帮助吗?

那么如何确保请求来自 GitLab?有什么好办法吗?

【问题讨论】:

  • 不能只看源地址吗?
  • @agilob 你的意思是 ip 地址?据我所知,gitlab 并没有在他们的文档中告诉我他们的 ip 范围,而且他们的 ip 将来可能会改变,这看起来不是一个好习惯.
  • 根据您的实施,您应该能够看到发送请求的 IP 和域。是的,HTTPS 确实有帮助,它与域相关联。
  • @agilob ,谢谢,但是很复杂,我会按照 MrTux 说的方法试试。

标签: security gitlab webhooks


【解决方案1】:

您可以包含一个仅在 gitlab 前端输入且其他人不知道的秘密令牌,然后在每个请求上检查该令牌。

当与 https 一起使用时,可以将其作为 cgi 参数添加到 webhook 的 URL 末尾,例如 ?token=somesecretvalue

【讨论】:

  • 谢谢,这是一种可行的方法。
  • 不过,令牌可以从 gitlab 存储库设置页面意外(或有意)发现,它可用于伪造对 webhook 的请求。我猜最好的方法是使用令牌+源IP地址验证...
猜你喜欢
  • 2014-04-22
  • 2023-01-16
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多