mixiの昔の足あと機能を脆弱性なしに復活させる方法
『mixi足あと廃止に寄せて』というエントリを読んで、mixiからリアルタイムの足あと機能が廃止されたことや、その問題点がいまいち把握されずに復活の議論がなされているらしいことを知った。
そこで両者の希望を叶える技術的な対策を考えてみた。
mixi内部の技術者さん方も、たぶんこんなこととっくに検討してて、実装や運用がコスト的に見合わないとか、ユーザーの使い勝手が悪くなるから「実装しない」という判断をしただけだと思うけれど。
仕様概要
- 足あと記録に関してCSRF対策を実装する
- CSRFが検出された場合にアクセスを拒否するのではなく「あなたの足あとが◯◯さんに通知されますが、それでも閲覧しますか?YES or NO」という選択肢だけが表示される
- YESが選択されたら足あとを記録して当該ページ内容を表示する
- NOが選択されたらmixiのhomeにすっ飛ばす
- 足あと記録は従来通りサーバー側の処理だけで行う
仕様概要は以上。
注意点は5つ
- mixi内からリンクされた場合には警告が出ない。CSRF対策は外部からリンクされた場合限定なので当然なのだが、これにより様々な誤解をする人が発生すると思われる。
- ログインしていなかった人の場合、外部のリンクを踏む→mixiログイン画面に飛ばされる、ということになり、そこでログインしてしまえばCSRFと見なされないのだが、その場合にも特別に警告する仕様が必要かも。
- 足あとCSRF対策用のデータはGETで送信されるため、Referer漏れ対策が必要になる。ただmixi運営側から見れば、「セキュリティを高めるため」という合理的な理由でリンククッション(て呼ぶの?)の導入ができ、広告を貼る場所の確保ができる。
- 足あとCSRF対策用のデータはログイン時に生成するか、リクエスト毎に生成するか要検討。ログアウトしない人が多いとか、他人に自分が見ているmixiのURLを教えただけで漏れるという問題があるので、リクエスト毎に生成した方が良さそうではある。
- こんな面倒くさい仕様になってもユーザーは喜ぶの?
得られる効果
その他
何か穴や見落としがあるような気もする。技術的に抜けてる点があったら教えてください。勉強になります。
*1:監視カメラとしての役割を一応果たせる。一応。