TwitterBotを守る会
https://scrapbox.io/files/61bdfa8e6813bf002170db66.png
Twitterには悪い大人しかいない(ソース:あしゅりー.icon)
何の対策もしていないTwitterBotをタイムラインに放流するとあんなコトやこんなコトまでされてしまう ここではどんな酷いことをされるのか、またどう対策すべきかまとめる
方針をまとめるだけで実装までは記載しない(気が向けばする)
①大量のリプライ
誰からのメンションでも受け付け、それに対するリプライを送信するようにしていると、ツール等で大量のメンション爆撃などをされると一瞬でツイート用のAPIが枯渇し、ツイート制限がかかってしまう
そればかりか、TwitterにAPIの不正な利用などと疑われてアカウントのロックや凍結などもあるかもしれない
対策
問題は「不本意なリプライをさせられる」ことであるため、リプライを許可する条件を設定する
ざっと以下のようなものが挙げられる
botがフォローしているアカウントからのメンションの場合のみリプライを許可
上記であっても1アカウント当たり1日1回だけリプライを許可(2回目以降のメンションは無視)
②第三者に対するメンションの踏み台
Twitterに存在するbotの中には「メンションしてきたアカウントの名前をリプライに含めて返信する」ようなものがある
これと同じような会話botを作っている場合は注意が必要である
例えば、@Asyley_のアカウント名はあしゅりーであるが、これをあしゅりー@Asyley_aquaに変更して、上記のbotに「おはよう」とメンションしたとする
すると上記botは@Asyley_ おはよう、あしゅりー@Asyley_aquaのようなリプライを返す
これにより、本来リプライを返すべき@Asyley_以外にも@Asyley_aquaに対してもメンションを飛ばしてしまうこととなる
悪意を持ってこれを利用されれば第三者に対するメンションの踏み台となってしまい、そこから発生しうる被害は計り知れない
対策
そんな運用をしない
やるにしてもアカウント名の中の@はエスケープする、とかやればいいんじゃないかな
③許可すべきではないコマンドの実行
例えばbotに「feed」というコマンドを追加し、コマンドをメンションで受け取ったら自動で餌やりするとしよう これを誰でも実行できるようにしていれば、たとえ悪意が無くても複数人がコマンドを実行することで1日に何度も餌やりが行われてしまい、水槽内が悲惨なことになる
上記でフォローしているアカウントだけコマンドを実行できるようにしていたとしても危険
対策
自身以外に実行されたくないコマンドの実行権限は素直に自身のアカウントのみにする
フォローしているアカウントに実行権限を開放するにしても、1日1回誰かが実行した時点で以降は実行不可とする、など