【问题标题】:How verify request of webhook are from Telegram?如何验证 webhook 的请求来自 Telegram?
【发布时间】:2021-12-21 04:57:08
【问题描述】:

我有一个设置为使用 Telegram webhook 机制的 Telegram 机器人,但如何信任请求并知道它们是否来自 Telegram?

根据 Telegram 文档,我发现有两种方法:

  • 将它们限制为 Telegam ip(这很脏,如果由于某种原因 telegam 更改其 ip,我的机器人将关闭,因此它不是一个选项)
  • 为 webhook 设置一个私有长 url,这样只有我的服务器和电报知道该 url(我认为这不是保护我的 webhook 的足够好的解决方案,如果由于某种原因我的 url 泄漏,url 是公开的,每个人都可以假装他们是电报并发送虚假请求)

这两个是我发现的有什么我想念的吗?为什么 Telegram 不为其 webhook 提供像 OAuth2 这样的 rsa 公钥或像 Github 这样的可信令牌或签名?私有 URL 是否足够安全?

【问题讨论】:

    标签: telegram telegram-bot telegram-webhook telegram-api


    【解决方案1】:

    关于IP限制here

    在端口 443、80、88 或 8443 上接受来自子网 149.154.160.0/20 和 91.108.4.0/22 的传入 POST。

    如果您决定将流量限制在我们的特定地址范围内,请在遇到麻烦时随时关注本文档。我们的 IP 范围将来可能会改变。

    Telegram 总是在应用重要更改之前通知用户,因此如果您订阅他们的BotNews 频道,您将不会错过有关 ip-range 更改的消息。所以我认为它仍然是一个不错的选择。


    关于

    如果由于某种原因我的 url 泄露,那么 URL 是公开的,每个人都可以假装他们是电报并发送虚假请求

    我认为您的论点是正确的,但私人 url 泄漏的可能性并不高,而且它在某种程度上是蛮力安全的。根据我们对 Telegram 如何关心安全性的了解,如果他们收到虚假 webhook 请求的报告,他们会提供解决方案。

    如果您仍然担心,您可以使用Local Bot Api Server,您只能信任您的内部 IP 地址。

    【讨论】:

    • 你说得对,这不是一个大洞......在我创建了这个问题之后,搜索了私有 url 可能是一个安全问题的方式,发现当有可能使用私有 url 时它是不好的其他网站或网络浏览器,这不是我们的情况。但默认情况下,私有 url 仍会伪装成常规 url,因此它们将打印在网络服务器访问和错误报告日志中。任何使用电报 webhook 的人都必须意识到禁用它们以避免功能问题这是我发现的私人 URL 的唯一严重问题......而且我认为他们必须在他们的文档中添加一些关于此的警告
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2018-07-20
    • 2018-01-28
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多