特定のアカウントでのログイン時にのみ、リンクをクリックするだけで任意のアカウントを勝手にフォローしてしまう という話の続き。
タイトルが物凄くアレな気がしますが…。
危険!?Twitterで本人が意図しない「フォローの追加」「お気に入りの登録」「リツイート」を実行させる事が出来る模様。という記事の続きです。
IE8/Firefox 25.0/Opera 12.16(WinXP)で試しましたが、リツイートしますか?という確認画面で止まり勝手にRTされる現象は確認できませんでした。 @otapps
— spark.K (@sparkkamakiri) 2013, 10月 31
ほんとですね。 『Warning:このリンクをクリックすると以下のツイートがリツイートされ、@otappsをフォローします。』
— piyokango (@piyokango) 2013, 11月 2
現象を確認出来た方、出来なかった方それぞれいらっしゃるようです。
※上記の記事の追記では特定のアカウントとブラウザの組み合わせでのみ再現と書いていますが、先程確認してみたところ、症状が発生するアカウントでログインしている状態であれば、FirefoxでもChromeでも再現しました。
さて、ドキュメントには記述がありませんが…
https://twitter.com/intent/follow
というエンドポイントも存在します。
で、特定のアカウントでログイン時に
https://twitter.com/intent/follow?screen_name=任意のアカウント(スクリーンネーム)
にアクセスするだけで任意のアカウントを勝手にフォローしてしまいます。
どういう現象かは以下の動画をご確認下さい。
https://twitter.com/intent/retweet にアクセスした動画
https://twitter.com/intent/follow にアクセスした動画
どうしてこういう事が起きるのだろう〜…と思っていたのですが、上記のURLを叩くと、現象を確認出来るアカウントでログインしている場合に限って、ソースに
<script type="text/javascript" charset="utf-8"> document.getElementById('follow_btn_form').submit(); </script>
というスクリプトが含まれています。
フォローボタンのフォームは以下のような感じ。
<form action="/intent/follow?screen_name=otapps" class="follow" id="follow_btn_form" method="post"><div style="margin:0;padding:0"> <input name="authenticity_token" type="hidden" value="KgJEPe3r3YPnwLY3ffRUxHW7fHvEbEwJrXymYrYp" /></div> <input name="screen_name" type="hidden" value="otapps" /> <input name="profile_id" type="hidden" value="1314391681" /> <input name="return_to_referer" type="hidden" value="true" /> <button type="submit" class="button"> <b></b><strong>フォロー</strong> </button> </form>
上述したスクリプトが含まれていると、リクエストの妥当性検証用トークンも含めて勝手にPOSTすることになるので勝手にフォローしてしまいますよね…。
何故、特定のアカウントでログインしている状態でのみこのようなスクリプトが含まれるのかは不明です。