Discordのボットトークン:何であり、どう守るか
ボットトークンは、あるプログラムが特定のDiscordボットとして動くことを許可されていると証明する、秘密の文字列です。 それを持つ人は誰でもボットとしてログインし、そのすべての権限を使えるので、パスワードと同じように扱い、露出した瞬間にリセットしてください。
トークンとは何か
Discord Developer Portalでアプリケーションを作り、そこにボットを追加すると、Botのページにトークンが表示されることがあります。それは、文字、数字、ドットの長い文字列です。ボットのコードは、Discordに接続するときにそれを送り、Discordはそれを使って、どのボットが呼び出しているかを判断します。
トークンは、公開されているアプリケーションIDや、サインインの流れで使われる別の秘密であるクライアントシークレットとは、同じものではありません。
露出したトークンでできること
トークンがあれば、見知らぬ人は自分のマシンからボットを動かせます。ボットとしてメッセージを送り、見えるものを読み、ボットが参加しているすべてのサーバーで、そのすべての権限を使えます。大きなサーバーで管理者やメンバーのBANの権限を持つボットは、悪い人の手に渡れば深刻なリスクです。
Discordは漏洩を監視しています。トークンが公開のコードリポジトリに投稿されると、Discordはそれを検出してリセットし、オーナーに通知します。しかし、それに頼らないでください。プライベートのチャットやスクリーンショットで共有されたトークンは、検出されないからです。
トークンを守る
- Discordのチャンネル、サポートのチケット、スクリーンショット、公開のリポジトリには、決して貼り付けないでください。
- バージョン管理にコミットされない環境変数やシークレットのファイルに保存してください。
- ボットには、必要な権限とインテントだけを与え、漏洩の被害を小さくしてください。
- 疑いがあるなら、Developer Portalでリセットしてください。リセットすると古いトークンは直ちに使えなくなり、自分の設定を新しいものに更新します。
正当なサービスがあなたのクライアントシークレットを必要とすることはありません。必要なのはボットトークンだけで、それも、ボットを動かすホスティングのためだけです。
トークンとNoxyr
通常のNoxyrのボットは、あなたからトークンを必要としません。招待リンクで追加するだけです。トークンが登場するのは、Noxyrの機能を、あなた自身のボット名とアバターで動かすカスタムボットを設定するときです。そのためには、自分のDiscordアプリケーションを作り、サーバーメンバーとメッセージ内容のインテントをオンにして、ボットトークンをNoxyrに渡します。Noxyrがクライアントシークレットを求めることは決してなく、カスタムボットはいつでもオフにでき、トークンを削除すれば、サーバーは通常のNoxyrのボットに戻ります。
トークンをホスティングサービスに渡すことは、本物の信頼の判断です。何を考慮すべきかは、ホスティングサービスにボットトークンを渡すのは安全かの記事で説明しています。リセットの詳細は、ボットトークンのガイドにあります。
よくある質問
ボットトークンが漏れたら、何をすべきですか?
Developer Portalを開き、ボットのページに進んで、すぐにトークンをリセットしてください。その後、古いトークンを使っていた場所をすべて更新してください。
ボットトークンは、クライアントシークレットと同じですか?
いいえ。それらは別の秘密です。Noxyrのカスタムボットはボットトークンだけを必要とし、クライアントシークレットは決して必要としません。
ページを離れた後、トークンをもう一度見つけられますか?
Discordは、リセットか作成のときにしか表示しません。失くした場合は、リセットして新しいものを得てください。