テレグラムのためのボットの異常なアプリケーションとテレグラム保護の検証







少し前に、私のプロジェクトについて話しました。電話をかけないでください。電話番号をレジストリに追加するときに、これが自分の番号であることを確認する必要があります。



確認の標準的な方法-SMSまたは通話はかなり良いですが、無料ではありません。 たとえば、私たちが使用するSMS.ruは1 SMSコスト1.5ルーブルを使用します(メインページに記載されている「25 kopecksのSMS」は嘘であり、そのような関税はありません)。



番号を確認する無料の方法は何ですか? 私には次のことが起こりました。



  1. ユーザーに自分の番号からSMSを送信するように依頼します。 SMSを受信し、たとえばメールに送信する無料のロシア語番号を見つけることはできませんでした(以前はZadarmaにこのオプションがありました)。 ロシア語以外の番号を使用すると、ユーザーは怖がってしまいます。 代替ソリューション-個人番号、Android、 SMSゲートウェイなどのアプリケーション-は、信頼性と帯域幅の面で自信を呼び起こすものではありません。
  2. ユーザーに自分の番号から電話をかけるよう依頼してください 。 さらに難しいオプション。
  3. テレグラムによる検証。


最後のオプションは面白そうだ。 どのように機能しますか? ボットは、ユーザーに認証用のサイトを選択するように要求し、ユーザーの電話番号を要求します。 ユーザーが電話番号を報告すると、ボットは選択したサイトの電話番号を確認します。



Telegram Bot APIでは、ユーザーに電話番号を尋ねることができます



>>> contact_keyboard = telegram.KeyboardButton(text="send_contact", request_contact=True) >>> custom_keyboard = [[ contact_keyboard ]] >>> reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard) >>> bot.send_Message(chat_id=chat_id, ... text="Would you mind sharing your contact with me?", ... reply_markup=reply_markup)
      
      





ユーザーがボットに電話番号を与えることに同意すると、ボットは次を受け取ります。



 { "update_id": 912872664, "message": { "message_id": 57, "from": { "id": 777777, "first_name": "Ne Dimon", "last_name": "On vam", "username": "onvamnedimon" }, "chat": { "id": 777777, "first_name": "Ne Dimon", "last_name": "On vam", "username": "onvamnedimon", "type": "private" }, "date": 1492274787, "contact": { "phone_number": "79160000001", "first_name": "Ne Dimon", "last_name": "On vam", "user_id": 777777 } } }
      
      





ユーザーは間違った電話番号を送信できますか? たぶん。 「はい」と答える代わりに、ユーザーは電話帳からボットに他の連絡先を送信できます。 しかし同時に、この場合のcontact/user_id



from/id



と等しくなく、ボットは他の誰かの連絡先が送信されたことを認識します。



私は質問に興味がありました-変更されたTelegramクライアントを使用して、他の人の電話番号をIDで送信することは可能ですか? @BotSupport Telegramは、これを実行できないと主張しています(おそらくサーバーにチェックがある)。 しかし、私は彼らを本当に信用していません(特にロシア語を話すサポート)。したがって、私はタスク提案します -私たちのウェブサイトで番号(916) 000-00-01



を確認します( これを行うには、ボットのリンク(916) 000-00-01



、IDとともに番号(916) 000-00-01



を番号リクエストに送信します。

私が理解しているように、Telegramには永続的なBug Bountyプログラムがないので、それを管理する人は多くは得られません。 ただし、Tinkoff銀行ボットなどで、誰かに関する情報を取得することは可能です;)。



All Articles