Telegram Bot使用requestContact获取用户手机号是否安全?能否避免发送他人联系人?
回答:Telegram机器人获取手机号的安全性问题
用户问题:
我通过以下代码实现获取用户手机号的功能:KeyboardRow row = new KeyboardRow(); row.add(KeyboardButton.builder() .text("contact") .requestContact(true) .build());请问该方式是否安全?比如是否存在用户发送他人联系人的情况?
你用的这种方式并非绝对安全,用户确实可以发送他人的联系人信息。
核心原因:
- 当设置
requestContact=true时,Telegram客户端会直接唤起用户的本地通讯录列表,用户能自由选择列表里的任意联系人(不管是自己的手机号,还是通讯录里其他人的)发送给机器人,这个机制本身没有限制只能发送用户本人的号码。 - 用户可能是误操作选错号码,也有可能故意提交非本人的联系人信息。
若要确保获取的是用户本人手机号,可参考这些方案:
- 验证码验证:机器人向获取到的手机号发送验证码,要求用户输入验证,以此确认用户拥有该号码的使用权。
- 调用Telegram API获取绑定手机号:如果用户已经授权机器人获取个人信息,可以直接读取
User对象中的phone_number字段(这个是用户绑定Telegram的官方手机号,可信度更高,但需要用户同意权限申请)。 - 手动输入+验证:让用户手动输入手机号,再通过验证码校验,虽然流程有点繁琐,但能最大程度避免非本人号码的情况。
内容的提问来源于stack exchange,提问作者Abdumajid Abdullatipov
相关产品推荐
相关产品推荐

