<前の日記(2008年11月24日) 次の日記(2008年11月29日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 2253   昨日: 1295

2008年11月25日

新はてなブックマークの登録ブックマークレットは使ってはいけない

使ってはいけない

はてなブックマーク(以下「はてブ」)がリニューアルされ、ブラウザからブックマークレットでブックマーク登録(以下「ブクマ登録」)しようとすると、図1の画面が現れるようになった。「こちらから再設定をお願いします」と指示されているが、この指示に従ってはいけない。ここで提供されている新型ブックマークレットは使ってはいけない。(この指示には従わなくてもブクマ登録はできる。)

画面キャプチャ
図1: ブックマークレットの更新を促される画面

新型ブックマークレットを使用すると図2の画面となる。ブクマ登録しようとしているWebサイト(通常、はてな以外のサイト)上に、はてブの画面のウィンドウが現れている。これは、Ajaxと共に近年よく使われるようになった「ページ内JavaScriptウィンドウ」である。(ポップアップウィンドウとは違い、ウィンドウをドラッグしてもブラウザの外に出すことはできず、あくまでも表示中のページ上のコンテンツであることがわかる。)

画面キャプチャ
図2: はてなログイン中に新型ブックマークレットを使用した様子

同じことを、はてなにログインしていない状態で行うと、図3の画面となる。

画面キャプチャ
図3: はてなログアウト中に新型ブックマークレットを使用した様子

「はてなへのログインが必要です」をクリックすると、図4の画面となる。ここでパスワードを入力してはいけない。

画面キャプチャ
図4: 画面を進めた様子

このウィンドウは、元ページ(図4では背後にある緑色のページ)のコントロール下にある。つまり、図4の「ページ内JavaScriptウィンドウ」の内容は、元ページのJavaScriptによって差し替え等が可能な状態にある。見た目が同一でも、偽のパスワード入力画面となっている可能性があるので、ここにパスワードを入力してはいけない。

図5のようにして、このウィンドウをブラウザのタブに移動させるなどして、図6のように、アドレスバーのURLのドメイン名が hatena.ne.jp であることが確認できれば入力してよい。また、(特に外出先で公衆無線LANを使うときなど回線を信用できない状況では)SSLでの接続になっていることをアドレスバーで確認してから入力する。

画面キャプチャ
図5: このフレームをタブとして分離させる様子

画面キャプチャ
図6: ブラウザのアドレスバーのURLとSSL使用状況を確認する

Ajax時代の安全なWebサイト利用の鉄則

フィッシングや盗聴の危険を回避するという意味で「安全にWebサイトを使う」正しい手順は、

にまとめた通りであるが、ここに示されている単純な鉄則は、Ajax時代の「ページ内JavaScriptウィンドウ」が多用される状況においても同じである。

つまり、いかなる場合であれ、情報を入力する際には、入力する直前にブラウザのアドレスバーを確認し、アドレスバー上のドメイン名やSSL状態を確認してから入力することである。

この鉄則に従うと、図7の画面では、アドレスバーに表示されたドメイン名は「takagi-hiromitsu.jp」であり、意図した送信先でない(意図した送信先と確認できない)と判断するべきである。また、SSLは使用されていない(使用されていると確認できない*1)と判断するべきである。

画面キャプチャ
図7: これはどこのサイトか?

過去にポップアップウィンドウの使用が流行した際、フィッシングの脅威が問題となった。つまり、悪意あるサイトにアクセスしたとき、偽の入力画面のポップアップウィンドウが現れ、背後の元のウィンドウが本物サイトにリダイレクトされると、本物サイト上のウィンドウであるかのように誤認されるという問題(図8)があった。

説明図
図8: 過去のポップアップウィンドウによる偽装の説明図
2003年6月14日の日記で実演した際の画面より*2

その問題は、その後、Internet Explorer 7と、Firefox 3での改善で、ポップアップウィンドウでもアドレスバーが常に表示されるようになったことで、解決した。つまり、ユーザの心得は、「いかなる場合でも、入力の直前にブラウザウィンドウのガワ部分(「chrome領域」と呼ばれる)のアドレスバーを確認する」という単純なルールでよい。このルールはようやく確立したと言える。

ポップアップウィンドウが嫌われるようになり、代わってよく使われるようになったのが、Ajax的な技法を駆使した「ページ内JavaScriptウィンドウ」であるわけだが、これにはアドレスバーは現れない。しかし、入力時に確認すべきはブラウザのアドレスバーでよい。(入力欄が所属するブラウザウィンドウのアドレスバーを確認する。)

なぜなら、「ページ内JavaScriptウィンドウ」は、それが所属するブラウザウィンドウが表示中のWebページのコントロール下にあるので、そのWebサイトを信用するときは、その中にある「ページ内JavaScriptウィンドウ」も信用してよいことになるし、また逆に、そのWebサイトを信用できないときは、その中にある「ページ内JavaScriptウィンドウ」も信用してはいけないことになるからだ。

(ある人が信用しているWebサイトが、危険な「ページ内JavaScriptウィンドウ」を表示させることがあるかもしれないが、それが悪意あるサイトならば信用するのが誤りであるし、悪意あるサイトでないならば、それはそのWebサイトのセキュリティ脆弱性であって、修正されるべきものである。修正されないようなサイトならば、信用するのが誤りということになる。)

このようなやり方のブックマークレットを普及させてはいけない

今回のはてブの新型ブックマークレットは、攻撃手段に対して何らかの対策が打たれるかもしれない。しかし、偽サイトに差し替えられる攻撃を防ごうとしても、元ページのコントロール下にある限りどうやっても攻撃手段は残るわけで、いたちごっこになるのは目に見えている。

どうにか対策として成立し得るように思われるのは、ログインしていないときのログイン画面は「ページ内JavaScriptウィンドウ」ではなく、ブラウザの新規タブ(や新規ウィンドウ)に表示するように仕様変更した上で、「ユーザはアドレスバーの確認できる画面でしかログインしないように」と周知徹底するという案であるが、そのようなやり方もやめるべきである。

なぜなら、信用してよいか不明なサイトでブックマークレットから出現させた「ページ内JavaScriptウィンドウ」において、入力する情報によって、入力してよいか入力してはいけないかを区別するというルールは、一般の人たちにとって理解するのに無理があるからだ。図2の画面は、偽装されているかもしれないが、入力してよいのか、それとも入力してはいけないのか、また、別のケースならどうか、一般の人に判断せよというのは無理がある。

信用してよいか不明なサイトで、そのサイト自身が出現させた「ページ内JavaScriptウィンドウ」であれば、それは通常の入力欄と同じに扱うだけのことである。しかし、ブックマークレットで自分で出したウィンドウとなると、元ページの信用性を忘れて、過度に信用してしまう危険がある。

そのようなUI操作に一般の人たちを慣れさせてはいけない。「ページ内JavaScriptウィンドウ」はそのページのコンテンツであるという単純なルールを破壊してはいけない。

そもそも、ブックマークレットの使用というのは、「.exe」ファイルの実行と同様のセキュリティリスクの伴うものであることを忘れてはならない。上に述べたような状況というのは、通常のWeb利用だけならば生じ得ないことであり、「ブックマークレット」というソフトウェアのローカルコンピュータへのインストールによって初めて生じ得る問題である。

はてなが公式に提供しているものであるから皆、信用して使用するわけだが、本来はどこの馬の骨かわからない者が提供しているブックマークレットを易々と使用してはいけないものだ。

はてブの新型ブックマークレットは、見ているページにJavaScriptを注入し、DOMを操作してページを書き換えることで、このような「ページ内JavaScriptウィンドウ」を出現させるようになっている。ブックマークレットでそこまでやることが許されるのか。

もちろん、ギークの人が内容を理解して自己責任で様々なブックマークレットを使うのはかまわない。だが、一般の人を巻き込まないで欲しい。はてなが、はてブの公式機能として「こちらから再設定をお願いします」と促せば、沢山の人々が、理解しないまま、否応無しにこのようなやり方に引きずり込まれていく。

Webの安全な利用手順を破壊する*3このようなブックマークレットを普及させるのは、やめていただきたい。

(ベータテストの段階から提供されていたようなので、もっと早く気付くべきだった*4。ちょうどそのころ他に様々な事が起きていたので、ベータ版を試す時間がなかった。)

*1 たとえ、はてな側が「ちゃんと https:// にリンクしている」と主張したところで、通信路を信用しない状況では、通信路上で書き換えられる可能性があり、リンク先がどうなっているかの保証はない。参照:「Q2: 入力ページを https:// にしなければならないのはなぜですか?(サイト運営者)

*2 背景に警察庁「@police」の本物サイトを出し、その上に偽のポップアップウィンドウを出現させた様子。当時、本物の@policeサイト自身が、このようにアドレスバーを隠したポップアップウィンドウで情報を表示させていた。

*3 SSLのオレオレ証明書で「ここでは大丈夫」と言って警告を無視して使わせる行為の問題性の一つと類似の理由で。

*4 はてなの人たちは、普段アドレスバーを見てないのか?

本日のTrackBacks(全100件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20081125]

はてなは11月25日、ソーシャルブックマークサービス「はてなブックマーク」の新バ...

Ajax時代の安全なWebサイト利用の鉄則について。SEO塾さんのブログでこの記事を知りました。最近、○○は使ってはいけない!系の記事って多いような・・・。

私自身は、はてブは使ってないけど(ついでに、最近IE7が落ちる原因がはてなツールバーにあるようなので、外したところだ)。 高木浩光@自宅の日記 - 新はてなブックマークの登録ブックマークレットは使ってはいけない ここのブログを読んで、グーグルマイマップとかカ..

高木浩光@自宅の日記 - 新はてなブックマークの登録ブックマークレットは使ってはいけない で書かれているとおり、使うのは止めるべき、でしょう。 現状のままでは、少し調べれば簡単に↓のようなページを作れてしまうので。 はてブの新ブックマークレットが危険な例 上..

高木先生曰く新はてなブックマークの登録ブックマークレットは使ってはいけないhttp://takagi-hiromitsu.jp/diary/20081125.htmlWebページの表示のさせ方に確かに問題があります。

高木浩光@自宅の日記 - 新はてなブックマークの登録ブックマークレットは使ってはいけないはてなが公式に提供しているものであるから皆、信...

検索

<前の日記(2008年11月24日) 次の日記(2008年11月29日)> 最新 編集

最近のタイトル

2024年11月11日

2024年07月28日

2024年07月27日

2024年07月07日

2024年04月07日

2024年04月01日

2024年03月23日

2024年03月19日

2024年03月16日

2024年03月13日

2024年03月11日

2023年03月27日

2022年12月30日

2022年12月25日

2022年06月09日

2022年04月01日

2022年01月19日

2021年12月26日

2021年10月06日

2021年08月23日

2021年07月12日

2020年09月14日

2020年08月01日

2019年10月05日

2019年08月03日

2019年07月08日

2019年06月25日

2019年06月09日

2019年05月19日

2019年05月12日

2019年03月19日

2019年03月16日

2019年03月09日

2019年03月07日

2019年02月19日

2019年02月11日

2018年12月26日

2018年10月31日

2018年06月17日

2018年06月10日

2018年05月19日

2018年05月04日

2018年03月07日

2017年12月29日

2017年10月29日

2017年10月22日

2017年07月22日

2017年06月04日

2017年05月13日

2017年05月05日

2017年04月08日

2017年03月10日

2017年03月05日

2017年02月18日

2017年01月08日

2017年01月04日

2016年12月30日

2016年12月04日

2016年11月29日

2016年11月23日

2016年11月05日

2016年10月25日

2016年10月10日

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|10|11|12|
2017|01|02|03|04|05|06|07|10|12|
2018|03|05|06|10|12|
2019|02|03|05|06|07|08|10|
2020|08|09|
2021|07|08|10|12|
2022|01|04|06|12|
2023|03|
2024|03|04|07|11|
<前の日記(2008年11月24日) 次の日記(2008年11月29日)> 最新 編集