昔からあるみたいなんだけど、qiita で記事検索してみたら無かったので投稿してみる。
selfXSS について。
とっても便利な JS コンソール
ちょっとした JS コードを動かすなら、chrome の JavaScript コンソールが便利だ。
chrome の右上、八卦で言うと「乾」みたいなマークを押し、ツール→ JavaScript コンソール で画面下側にコンソールが開いて、色々と実験が出来る。
同じものが Mac なら command + option + J で開く。手元に windows PC が無いが、たぶん ctrl + shift + j とかで開くはず。
ある日、facebook を開いているときに JS コンソールを開いたら、次のような警告が出た。
悪意のあるコードを貼り付け無いように注意するとともに、 セルフXSSとは何ですか というページへのリンクが貼られている。
我々開発者は、SNS や EC サイト開発の際、不断の努力によって「A さんが B さんの個人情報を奪う」というのを防いでいる(ドヤァ)。
ところが、「A さんが A さん自身の個人情報を見る」というのはどうにも対策しようが無い。これを防いでしまうと、SNS が SNS でなくなってしまうからだ。
だから、ある程度盗みにくくすることはできるけれども、悪意のある第三者が善意のユーザーをだまくらかして、ユーザー自身が悪意のあるコードを貼り付けてしまうのを防ぐことが完全には出来ない。
それを受けての、この JS コンソールだと思われる。
その他の SNS
特に注意文は無いが、console.log 関数を上書きして何も表示されないようにしている。
Google+
mixi
まとめ
self XSS への対策については(まだあんまり調べてないけど)、
- Facebook, Google+ のようにコンソールに警告を出す
- Twitter のように console や alert など、主要な API を何もしない関数に上書きしてしまう
などの合わせ技が有効かと思われる。