Telegram回调查询是否可信?是否需对其进行验证?
结论:必须验证回调查询数据,用户可构造任意自定义数据
用户完全能构造携带任意数据的回调查询:
尽管内联按钮是你发送给用户的,但高级用户或攻击者可以通过模拟Telegram的API请求格式,直接向你的机器人服务器发送携带自定义data字段的回调查询。只要你的机器人暴露了webhook地址或可通过API访问,这种操作是完全可行的。不能假设只会收到预设的合法值:
以你提到的选择题为例,你设置的按钮回调数据是A/B/C/D,但用户完全可以发送E、随机字符串甚至恶意内容,后端如果直接信任这些数据,可能会导致逻辑错误或安全风险。后端验证的必要性:
和传统Web应用的原则一致,机器人后端必须对所有外部输入(包括Telegram转发的回调查询)做校验:- 校验
data字段是否属于预设的合法值列表; - 若涉及敏感操作,还可以对回调数据添加签名校验,确保数据未被篡改;
- 对非法数据直接忽略或返回合法的错误响应。
- 校验
内容的提问来源于stack exchange,提问作者Yan
相关产品推荐
相关产品推荐

